jQuery日本語リファレンス

jQuery does not mean Japanese Query...

Core/API/jQuery

jQuery.noConflict()

この関数を実行すると、$関数の動作が先に定義されている動作に戻る。

$関数はprototype.jsなどをはじめ、多くのライブラリがそれぞれ拡張している関数である。
jQueryでも、核となるjQueryオブジェクトのショートカットして極めて頻繁に利用される。
このコマンドは、そのような$関数を定義する複数のライブラリを用いた際に衝突することを防ぐものである。
noConflictを使った場合、jQueryオブジェクトの呼び出しには明確に'jQuery'と書く必要がある。
例えば$(“div p”)と書いていたものも、jQuery(“div p”)と書かなければならない。
戻り値
jQuery
jQueryオブジェクト
サンプル
サンプル1
この例では、$はjQueryによって上書きされずに他のライブラリで定義された動作をします。
jQuery.noConflict();
// jQueryは、そのままに動作する
jQuery("div p").hide();
// $関数はjQueryとしてではなく、他のライブラリで定義された$関数として動作する
$("content").style.display = 'none';
サンプル2
この例では、$はjQueryによって上書きされずに他のライブラリで定義された動作をするが、
引数で$を受け取った関数のスコープ内ではjQueryオブジェクトとしての$として動作する。
これによって、jQueryのプラグインなどの中では安全にjQueryオブジェクトとしての$を利用でき、スコープの外では他のライブラリに$を開放することができる。
jQuery.noConflict();
(function($) { 
  $(function() {
    // ここでは、$関数はjQueryオブジェクトとして動作する
  });
})(jQuery);
// スコープの外では、他のライブラリで定義された$関数として動作する
サンプル3
$ではない文字列にjQueryオブジェクトを割り振る。ここでは、'j'の文字をjQueryオブジェクトとし、$は用いないように。
この方法は汎用的なライブラリを作ることにも利用することにも向かないため、極めて限定的な用途になると考えられる。
var j = jQuery.noConflict();
// jはjQueryとして動作する
j("div p").hide();
// $関数は、他のライブラリで定義されたものとして動作する
$("content").style.display = 'none';