2

我遇到了一个问题,我有多个插件在他们的 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 的 $ 别名吗?感谢您的帮助。

4

3 回答 3

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/

于 2013-01-26T00:43:08.293 回答
1

当您包含 jQuery 时,它会覆盖该jQuery变量。因此,您实际上可以做您所假设的事情,并且它应该可以正常工作,即使使用$.

不这样做的原因是因为同时维护多个版本的软件并不好玩,您的客户端必须下载多个版本的 jQuery,并且您对将一些不应该放置的 JS 代码放在哪里有一种奇怪的依赖。那里。尽快从源头解决这个问题(即使用一个版本)。

在行动:http: //jsfiddle.net/AbAgu/

于 2013-01-26T00:37:31.920 回答
0

这将取决于。脚本将按顺序加载和执行。在中间脚本中立即执行的任何代码都将使用顶部脚本中的 jQuery。任何延迟到以后的代码(例如将由另一个脚本调用的函数定义,或者嵌套在事件处理程序中的函数定义)都将使用加载的最终版本。

如果这不是您想要的行为,您可以使用 jQuery.noConflict(),尽管这可能涉及修改您正在使用的插件以使用正确的版本。

于 2013-01-26T00:52:54.867 回答