2016-09-28 51 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. 裝入新的jQuery版本
  2. 裝入應用程序代碼
  3. 裝入舊的jQuery版本
  4. 加載插件
  5. 致電jQuery.noConflict() - 這將恢復新版本的jQuery

由於jQuery 2.2相對較新,您還可以嘗試加載最新版本的jQuery。

+0

所以這不會reoverride $對象或東西?像這樣,如果圖書館從應用程序調用將在3.X中做出的突破性變化顯示自己? – Jackie

+0

該庫將始終使用舊的jQuery版本。 jQuery對象在加載時傳遞給IIFE,並且庫代碼保留對它的引用。但是,如果庫是一個jQuery插件,則只能將其與'oldJQ('#el')。library()',而不是'newJQ('#el')。library()'一起使用。新的jQuery實例不會知道插件已添加到舊的jQuery實例中。 –

相關問題