2016-09-02 1 views
0

多くのjQuery 1.9.1機能に依存しているページに取り組んでいますが、サイト自体はjQuery 1.7.1に依存しています。 1.7.1が最初に読み込まれ、すべてのプラグインがそれに対して実行されます。プラグインスクリプト1.9.1が追加された後の特定のページで、$.noConflict(true)の変数に割り当てられます。問題は、jQuery UIとその他のいくつかの1.9.1オブジェクトからのプラグインにアクセスする必要があることです。jQueryオブジェクトのあるバージョンから別のバージョンにすべてのプラグインをコピーすることはできますか?

一般的なプラグインパラメータなどがありますか、私は2番目のバージョンから参照できるだけですか? jQuery191.plugins = $.pluginsのようなものでしょうか?または、私のnoConflictの前にjQueryプラグインファイルをリロードする必要がありますか?

答えて

3

私は確信していますが、理想的には、この問題をなくすjQueryの最新バージョンを1つ使用するようにサイトを更新してください。

あなたの質問への答えは、いいえ、  —少なくとも、適切に書かれたプラグインではコピーできません。適切に書かれたプラグインのハイレベルの構造は、これらの線に沿っている。

(function($) { 
    // Do things with $ here, such as registering a plugin function: 
    $.fn.thePlugin = function() { 
     // ...and presumably here as well... 
    }; 
})(jQuery); 

プラグインは、プラグインがロードされたときjQueryシンボルを制御のjQueryのバージョンへの参照を有することを意味します。

jQuery.fn.thePlugin = oldJQuery.fn.thePlugin; 

を...しかし、あなたはjQueryのバージョン間の恐ろしいのクロストークを持っていると思います:

その後、jQueryの異なるバージョンのをロードした後、あなたがこれを行うために誘惑されるかもしれないプラグインは次のようになります新しいjQueryによって呼び出されましたが、古いjQueryを使用していました。

さて、あなたが物事をクリーンアップできるようになるまで、私のgreenPluginので

以上で、あなたはプラグインのあなたの読み込みを複製する必要がありますことを起こる:

<script src="jquery-1.7.1.js"></script> 
<script src="this-plugin.js"></script> 
<script src="that-plugin.js"></script> 
<script src="the-other-plugin.js"></script> 
<script> 
var jq171 = jQuery.noConflict(); // With or without `true` 
</script> 
<script src="jquery-1.9.1.js"></script> 
<script src="this-plugin.js"></script> 
<script src="that-plugin.js"></script> 
<script src="the-other-plugin.js"></script> 

...明らかにしています醜い。 :-)しかし、おそらくスクリプトは2回目にキャッシュから来るでしょう。つまり、jq171でアクセスできるjQueryのバージョンとjQuery/$でアクセスできるjQueryの両方に3つのプラグインがあることを意味します。

+0

jQueryの2つのバージョンのロードを表示する場合は、実際には '.noConflict()'ステートメントを表示する必要があります。 – jfriend00

+0

@ jfriend00:まあ、技術的には、例のために必須ではありませんが、そうだと思います。 *編集:*私は持っています。 :-) –

+0

ありがとうございました。私はファイルのバンドルを実装しただけで、バンドルの分割には対応したくないので、アップグレードしてベストを願っています。アップグレードの競合が発生する可能性がある場所がありますか? – Marie

関連する問題