jQuery を使用したことのある友人は、jQuery のバージョンが異なると競合が発生する可能性があることを知っています。この記事では、次のようにこの問題に対する効果的な解決策を提案します。
ケース: jQuery 1.3.2 と 1.4.2 の間の競合を解決します。 (この例はテストされ、合格しています!)ステップ 1: 1.4.2 ソース コードの最後に文を追加します:
var $j4 = jQuery.noConflict(true);
window.$=_$; window.jQuery=_jQuery;
ステップ 2: 1.4.2 フレームワークに基づくすべてのプラグインの先頭に次のコードを追加します。
var _temp$ = window.$,_tempjQuery = window.jQuery;
window.$ = $j4;
window.jQuery = $j4;
最初に一時変数を保存する必要がある理由は 3 つあります:
①. jQuery プラグインのソースコードはあまり変更したくないので、変更するとしてもできるだけ変更しない方が良いです。また、途中の元のコードを変更せずに、先頭と末尾に変更したコードを追加することも良い方法です。②. 1.4.2 では jQuery と $ の制御を放棄しましたが、他のプラグインとの競合があったとしてもプラグインは競合を予測できないため、既存のプラグイン コードはそれらを参照として使用します。 . jQuery 下のプラグインでない場合は、$ または jQuery を使用して参照します。
③. プラグインが直接 window.$ や window.jQuery を使用して 1.3.2 の jQuery や $ を参照することを防ぐため、このような状況は比較的まれではありますが、念のためです。
中央の元のコードは変更されず、次のコードが最後に追加されます:
window.$ = _temp$;//将$的引用权限返还给jQuery1.3. window.jQuery = _tempjQuery;//将jQuery的引用权限返还给jQuery1.3.
要約: これまでのところ実現可能な解決策: jQuery1.4.2 は $ と jQuery の制御権限を完全に放棄します。 1.3.2 $ の制御権限は放棄するが、jQuery の権限は放棄しない 実際には、jQuery も放棄できますが、別名 $j3 を与える必要があります。 $ の制御権限を取得するプロトタイプを jQuery1.3.2 の後ろに配置するのが最善です。ただ、今後 jQuery1.4.2 を使いたい場合は $j4 を使って参照する必要があります。しかし、この方法では、jQuery フレームワークのバージョンの競合がどれほど多くても、それらはすべて解決されます。 jQuery 1.2 が登場した場合は (2) の実行手順を参照してください。ただし、最初の手順は次のように変更されます:
var $j2 = jQuery.noConflict(true);
この記事で説明されている内容は、皆さんの jQuery プログラミングにとって一定の参考になると思います。