2016-09-28 13 views
0

JQuery 2.2が必要な古いライブラリを含めていますが、他のものには最新バージョンのJQueryを使用したいと考えています。問題のライブラリは、UMDを使用してミックス(と思う)ので、コードは次のようになります...UMDモジュールで宣言された変数を変更することは可能ですか?

(function ($) { 
    $.extend(true, window, { 
    ... 
    }) 
})(jQuery); 

は私がで使用されるものよりも古いバージョンであることをjQueryの変数を変更することができる方法はあります残りのアプリケーション?

答えて

1

ライブラリがロードされるときに、window.jQueryが古いjQueryバージョンを参照していることを確認してください。

ライブラリに古いjQueryバージョンがロードされたら、新しいバージョンをロードしてアプリケーションコードをロードします。

<script src="old-jquery.js></script> 
<script src="library.js"></script> 
<script src="new-jquery.js"></script> 
<script src="app.js"></script> 

あなたはあなたができるこの順序でコードをロードしたくない場合は、次の

  1. ロード
  2. は、アプリのコード
  3. ロード古いjQueryのバージョンをロードし、新たなjQueryのバージョン
  4. プラグインをロードする
  5. jQuery.noConflict()を呼び出します。これにより、jQueryの新しいバージョン
  6. が復元されます

jQuery 2.2は比較的新しいので、jQueryの最新バージョンを読み込むこともできます。

+0

これは$オブジェクトなどを元に戻すことはありませんか?同様に、ライブラリからアプリが呼び出されると、3.Xで行われた最新の変更が自分自身に現れますか? – Jackie

+0

ライブラリは常に古いjQueryバージョンを使用します。 jQueryオブジェクトはロード時にIIFEに渡され、ライブラリコードはそのオブジェクトへの参照を保持します。ただし、ライブラリがjQueryプラグインの場合は、newJQ( '#el').library()ではなく、oldJQ( '#el').library() 'でのみ使用できます。新しいjQueryインスタンスは、プラグインが古いjQueryインスタンスに追加されたことを認識しません。 –

関連する問題