我遇到过一个问题,即我的多个插件在他们的jquery版本上存在冲突。现在我搜索了谷歌,我知道你应该最终只使用一个版本的jquery并将你的代码更新到该版本的jquery。但是,出于好奇,我很想知道当你执行以下操作时会发生什么:
<include latest jquery>
<include script that uses jquery> <---and this jquery code is called back or triggered in some event handler function.. what happens then? what jquery $ version is used? the last jquery object that was added (the 'yet another version of jquery' )
<include some other version of jquery>
<include yet another version of jquery>
使用什么版本的jquery?为什么?究竟发生了什么,每个脚本的加载和执行是如何发生的?它只是调用最新的jquery的$别名?谢谢你的帮助。
答案 0 :(得分:6)
你可以使用jQuery.noConflict()来拥有多个版本的jQuery。只有一个人会使用$。
例如
<script src='jquery-1.3.2.js'></script>
<script>
var jq132 = jQuery.noConflict();
</script>
<script src='jquery-1.4.2.js'></script>
<script>
var jq142 = jQuery.noConflict();
</script>
然后你可以使用jq142和jq132。更多详情http://api.jquery.com/jQuery.noConflict/
答案 1 :(得分:1)
当您包含jQuery时,它会覆盖jQuery
变量。因此,你实际上可以做你正在做的事情,它应该可以正常工作,即使使用$
。
不这样做的原因是因为同时维护多个版本的软件并不是很有趣,你的客户端必须下载多个版本的jQuery,并且你有一个奇怪的依赖,你应该把你的一些JS代码放到哪里不在那儿。尽快修复此问题的来源(即使用一个版本)。
答案 2 :(得分:0)
这将取决于。脚本将按顺序加载和执行。在中间脚本中立即执行的任何代码都将使用顶部脚本中的jQuery。任何延迟到稍后的代码(例如,将由另一个脚本调用的函数定义,或嵌套在事件处理程序中的函数定义)将使用加载的最终版本。
如果这不是您想要的行为,您可以使用jQuery.noConflict(),尽管这可能涉及修改您正在使用的插件以使用正确的版本。