一起使用不同版本的jQuery和jQueryUI

我正在开发一个项目,他们的框架使用jQuery 1.3.2和jQueryUI 1.7.2。

升级框架中的版本是不可能的,所以我想并行运行jQuery 1.4.4和jQueryUI 1.8.5。

我已经看到不同版本的jQuery可以并行使用,如下所示:

  var j$132 = $.noConflict(true);    var j$144 = $.noConflict(true);  

但这也适用于以下情况:

     var j$132 = $.noConflict(true);     var j$144 = $.noConflict(true);  

AFAIK,jQuery UI没有$.noConflict()等价物。 但是,您可以使用jQuery UI的本地副本,并使用与用于别名不同库的类似技巧来包装整个JS:

 (function(jQuery) { // ... the jQuery UI lib code for jQuery 1.3.2 })(j$132); 

这可以使用服务器端构建脚本或为JS文件提供服务但使用上述代码包装内容的处理程序来优雅地实现。

还没有测试过这种方法,所以你可能不得不摆弄函数参数(虽然我认为可以安全地假设它使用jQuery在插件代码中引用jQuery)。

你使用它的方式是声明两个版本的jQuery:

     

…然后包括您的UI代码,如上所述。

不,在引用Google CDN的UI JS文件时,您无法做到这一点。

编辑:问题中的第二个代码块实际上是一个比这个答案更好的解决方案,因为它不需要将原始UI代码包装在自执行函数中并传递特定版本。 这两种方法都会在页面上产生完全相同的状态。

我到了这个页面是因为我遇到了与原问题中描述的相同的问题,但给出的答案并没有完全解决它(不再)了。

我需要使用jquery向具有大量现有代码的页面添加自动建议,没有简单的方法来更新到新的jquery和jquery ui,因此尝试使用旧版本旁边的新版本。

除了编辑jqueryui最后一行之外,jquery ui还有很多需要更改的jQuery引用,所以我使用了一个可以使用正则表达式替换的编辑器并替换为:\ bjQuery \ b with j $ 182

在我添加的页面中:

    

现在页面上的现有脚本和新的自动建议都正常工作。

我只想找到一个解决方案,它对我有用。

在Jquery库中,在最后一行之后输入

 var mySelector = $; 

在页面中包含其他版本后,请包括其他版本。

现在,在你想要使用这个jquery版本的所有脚本中(甚至是jquery ui和其他库),用mySelector替换$。 使用replaceall,会有几个地方,比如正则表达式匹配函数,你想要将mySelector替换回$。 这个问题困扰了我很长一段时间。 它刚刚解决了。

EDITTED:确保你没有替换jQuery原始脚本中的任何$。