noConflict()

このエントリーをはてなブックマークに追加

noConflictメソッドは、jQueryと他のライブラリのバッティングを防ぐメソッドです。

jQueryではグローバルにjQueryと$という2つのオブジェクトを利用しています、prototypeなどの一部のJavaScriptライブラリも、$というオブジェクトを利用しており後から読み込んだライブラリが、先に読み込んだライブラリのオブジェクトを上書いてしまいます。

<script type="text/javascript" src="other_lib.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
  $.noConflict();
  // Code that uses other library's $ can follow here.
</script>

このように指定すると、$オブジェクトは他のライブラリのものとなり他のライブラリが正しく動作するようになります。

それでは、jQueryはどのように利用すると良いのでしょう?

方法はいくつか用意されています。ひとつはreadyメソッドの引数に$を与える方法です。

jQuery(function($){
  // $ is jQuery
});

こうするとfunction内では$はjQueryの物が利用できます。

もうひとつは、無名関数を定義する方法です。次のように記述した場合もfunction内では$はjQueryの物が利用できます。

(function($){
  // $ is jQuery
})(jQuery);

もうひとつの方法は、$を別のオブジェクト名に変える方法です。noConflictメソッド実行時に返り値を変数に格納すると、格納した変数名を$メソッドの代わりに利用することができます。

var j = jQuery.noConflict();
// Do something with jQuery
j("div p").hide();

登録日 : 2012年09月14日 最終更新日 : 2012年9月14日

同じカテゴリー(jQuery Core)のエントリー

検索

スポンサードリンク

バージョン

リファレンス