1

jQuery スクリプトをランダムなページに動的にロードしています。jQueryをサポートする場合もあれば、他のライブラリを持っている場合もあれば、ライブラリをまったく持っていない場合もあります..

すべてのケースをサポートする必要があるため、まず jQuery がロードされているかどうかを確認します。そうでない場合は、.noconflict を使用して jQuery をページに動的にロードし (他のライブラリが存在する場合の競合を避けるため、daahhh)、スクリプトを続行します。

既に読み込まれている場合、ページが .noconflict 関数をトリガーしたかどうかを知る必要があります。なんで ?それは簡単です。ランダムなページに Prototype と jQuery の両方があるとしましょう (そうです)。ウェブマスターは、jQuery との競合を避けるために、jQuery の .noconflict モードをトリガーします。その後、スクリプトをトリガーし、jq がロードされているかどうかを確認します (はい)。そして、$() または jQuery() メソッドを使用するには、天気を知る必要があります。$() を使用し続けると、Prototype ハンドラーにアクセスする可能性があるためです。

4

3 に答える 3

3

.noConflict$オブジェクトではなく、オブジェクトのみを削除しjQueryます。true(最初のパラメーターとして追加する場合を除きます。

だからいつでも使えるjQuery()

于 2012-09-03T06:56:32.020 に答える
2

使用できます:

jQuery(function( $ ){
//Insert your javascript code here

});

また、すべてのjQueryコードはこれらの中括弧で囲まれ、他のプロトタイプと競合することはありません。

于 2012-09-03T07:00:38.267 に答える
2

他の誰もが言ったように、エイリアスの代わりに完全な jQuery オブジェクトを常にデフォルトで使用する必要があります。入力量の問題である場合は、ライブにプッシュする前に、テキスト エディターで $ を使用してから find-replace を使用してください。

...しかし、絶対に、積極的にこれをばかげた方法で行わなければならない場合、それは簡単です:

​if​ ($ == jQuery) { alert("YAY"); }​​​​​​

以下は、jQuery 1.8 と個別にロードされた MooTools 1.4.5 を使用して JSFiddle で作成した例です: http://jsfiddle.net/fL9rk/2/

一度実行してから、外部の MooTools をアンロードして、もう一度試してください。

警告しなかったとは言わないでください。

于 2012-09-03T06:58:06.190 に答える