2016-09-28 52 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实例中。 –

相关问题