如何有效地使用两个版本的JQuery

How to use 2 versions of JQuery efficiently?

本文关键字:两个 版本 JQuery 有效地      更新时间:2023-09-26

我有一个web应用程序,使用JQuery 1.6,这是不能改变的。我有一个D3查看器,需要一个版本至少1.8。我找到了一个解决方案如下:

<script src='link to jquery 1.10'  type="text/javascript"></script>
<script src='link to jquery custom 1.10'  type="text/javascript"></script>
var jQuery_1_8_2= $.noConflict(true);

所以这里使用'$',我现在使用'jQuery_1_8_2'。

这工作得很好,但我有插件jstreet。

我需要的是一个功能,基本上当查看器运行时,它改变了JQuery的每一个使用到较新的版本。所以我不需要进入插件的源代码并将每个'$'字符更改为'jQuery_1_8_2'。

你可以对JS文件进行排序,当jstreet加载时,只有一个版本的JQuery可用,它只获得一次JQuery对象,所以在加载后改变全局$ ' jQuery的值是没有问题的。

<script src="jquery_for_jstree.js"></script>
<script src="jstree.js"></script>
<script>
 var jsTreeJquery = $.noConflict(true);
 </script>
<script src="another_jQuery.js"></script>
<script>
   jsTreeJquery ("...").jstree(...)
</script>

您可以看到这种方法正在工作http://jsfiddle.net/npd3kc5t/

这是有效的,因为jtree遵循jQuery的建议,保护别名和添加作用域。

换句话说,当插件加载时,它得到全局jQuery引用,并为它创建一个局部变量$,所以不管你在插件加载全局$ ' jQuery后做什么。

使用jquery无冲突

//new version 
var newJquery = jQuery.noConflict();
//call it like this
newJquery('#example').on('click')......

对旧的做同样的事情

var oldJquery = jQuery.noConflict();