知りませんでした。
jQueryと一緒に他のライブラリ、例えばprototype.jsとかを一緒に読み込んで $() を使おうとすると、$()はprototype.jsでも採用されているためコンフリクトを起こすんですね。別のライブラリを読み込んで無くても既に $ が定義されている場合も同様。
対処法をメモメモ。
そのコンフリクトを回避するために。< br/> jQuery.noConflict()なる関数を使うんですね。
1 |
jQuery.noConflict(); |
この記述によって、$はjQueryの$ではなく、既に定義された $ として、ないしは他のライブラリで定義された$関数として働く。
で、jQueryオブジェクトを呼び出す際には下記のように $ ではなく jQuery と記述する必要がある。
この記述はjQuery本来の明確なjQueryオブジェクトの呼び出し方。それすらも知らなかった…
1 2 3 4 |
jQuery.noConflict(); jQuery(function(){ jQuery("p").attr("class", "p-style"); }); |
でもやっぱり $ を使いたい場合。$を引数で渡してその関数の中でのみjQueryオブジェクトの$として動作させる。
私はこの方法が好き。せっかく $ がjQueryで定義されてるのに使わないのはなんだか。
1 2 3 4 5 6 |
jQuery.noConflict(); (function($) { $(function(){ $("p").attr("class", "p-style"); }); })(jQuery); |
こんな方法も。他の文字列にjQueryオブジェクトを割り当てる。
1 2 3 4 |
var $j = jQuery.noConflict(); $j(function(){ $j("p").attr("class", "p-style"); }); |
改めて、メモ程度に。
この記事をシェアする