ホームページ > ウェブフロントエンド > jsチュートリアル > 異なるバージョンの jquery 間の競合を解決するにはどうすればよいですか?

異なるバージョンの jquery 間の競合を解決するにはどうすればよいですか?

青灯夜游
リリース: 2020-11-19 15:32:11
オリジナル
2032 人が閲覧しました

異なるバージョンの jquery 間の競合を解決するにはどうすればよいですか?

jQuery を使用したことのある友人は、jQuery のバージョンが異なると競合が発生する可能性があることを知っています。では、バージョンの競合の問題を解決するにはどうすればよいでしょうか?次の記事で紹介します。

ケース: jQuery1.3.2 と 1.4.2 の間の競合を解決します。 (この例はテストされ、合格しています!)

ステップ 1: 1.4.2 のソース コードの最後に文を追加します:

var $j4 = jQuery.noConflict(true);
ログイン後にコピー

それがここに追加される理由ソース コードはほとんどのものとは異なります 記事では、必要なときにソース コードを追加することについて言及しています。これは、1.4.2 ベースの多くのプラグインを追加する必要があるためです。ここに追加すると、このコードをあまりにも多くのプラグインに追加することによって発生する重複を避けることができます。この文は、1.4.2 の jQuery と $ の参照権限をすべて放棄します。つまり、1.4.2 ベースのプラグインでは jQuery と $ を使用できなくなります。同時に $j4 に新しい名前空間を与えます (これは window の属性です)。 1.4.2 のソース コードを見ると、実際に次の 2 つの文が実行されていることがわかります:

window.$=_$;
window.jQuery=_jQuery;
ログイン後にコピー

原理は window.$=_temp$ (名前空間を返す) と同じですが、ネーミングが違います。

ステップ 2: 1.4.2 フレームワークに基づくすべてのプラグインの先頭に次のコードを追加します。

var _temp$ = window.$,_tempjQuery = window.jQuery;
ログイン後にコピー

jQuery1.3.2 の $ と jQuery を一時変数スペースに配置します。 :

window.$ = $j4;
ログイン後にコピー

この文と次の文はすべて、中間コードの jQuery と $ を正しく使用するためのものです。次の $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.
ログイン後にコピー

ステップ 3: jQuery1.4.2 に基づく選択関数を使用したい場合は、将来的には、$j4(element) のみを使用できます。

要約: これまでの実現可能な解決策: 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);
ログイン後にコピー

3 番目の手順は $j2(element) を使用します。原則は同じです。

プログラミング関連の知識について詳しくは、プログラミング ビデオをご覧ください。 !

以上が異なるバージョンの jquery 間の競合を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート