如何阻止两个jquery库相互冲突

How do I stop the two jquery libraries from conflicting with each other?

本文关键字:jquery 冲突 两个 何阻止      更新时间:2023-09-26

我的页面包含几张幻灯片,只需js/jquery-1.5.2.min.js即可完美运行。

我最近用谷歌CDN在我的网页(www.ug-mart.com)上推出了一个顶部横幅,但顶部横幅不起作用。我不得不删除js/jquery-1.5.2.min.js才能使顶部横幅正常工作。

删除了js/jquery-1.5.2.min.js之后,所有最初运行良好的东西现在都不起作用了。只有最上面的横幅才有效。似乎我不能把js/jquery-1.5.2.min.js都放在同一个页面上。

有没有办法阻止这两个jquery库发生冲突并进行协作?

期待您的回复。

SirBT

您可以使用.noConflict()安全地将jQuery与其他库一起使用。通常,这是$函数名的使用冲突。

我更喜欢用"闭包"方法进行jquery:

(function($){
    //i can use "$" safely in here
}(jQuery));

此外,如果您正在使用多个版本的jQuery,那么就不要使用。只要下载最新的并使用它。它仍然应该满足一些旧的API。


这里有一个示例代码来展示它是如何工作的:

//lets hijack the "$"
$ = (function() {
    return {
        libName: "some other library using $"
    }
}());
//create a closure for us to use "$"
(function($) {
    //we can now use the $ safely in this closure  
    $('body').text('hello world! in the body!');
    //let's check "$" in here
    console.log('in here, "$" is jQuery:',$);
}(jQuery));
//let's check "$" out here
console.log('out here, "$" is:', $);​

请参阅jQuery的$.noConflict()

尽管如此,重建任何插件都需要旧的jQuery,并且只使用新版本,这样你会过得更好。

$.noConflict()工作吗?首先导入js/jquery-1.5.2.min.js,使用$.noConflict()注册js/jquery-1.5.2.minjs,然后使用另一个代码块,导入另一个版本的jquery。最后,使用jQuery.xxx()而不是$.xxx() 重写顶部横幅

我认为这应该是工作。

根据指定替换其中任何一个:-在其中任何一个中声明

$a = jQuery.noConflict();

用该文件中的$a替换该文件的所有$

简单的答案。将其添加到脚本的末尾。

<script src=""></script>
<script src=""></script>
<script type="text/javascript">
$.noConflict(true);
</script>