jQuery需要使用$符号。如果其他的JS库(如著名的原型)也定义了$符号,那么它会导致冲突,这会
影响JS代码正常
执行。Jqeury提供了避免这个问题的一些
解决方案,让我们看看这些解决方案之间的
区别是什么
方案1:
介绍任何()和美元与其他符号
替换 复制代码代码如下所示:
VaR J = jquery.noconflict();
$ j(
文档)Ready(
函数()){
J(# BTN1)。Click(function(){)
警报(
文本:+ J(#试验)。文本()));
});
});
缺点:在引入此代码之后,它不仅是当前的js
文件,而且是HTML引用的所有JS,如果它用于jQuery中的$,它将不得不替换以前的$ j。
方案2:
就绪函数是jQuery的入口函数,
$(文档)Ready(函数()){(){)
更换
jQuery(文档)Ready(函数($){ })
缺点:代码只适用于嵌套代码的准备,它是不适用于嵌套代码。如果你的逻辑是在准备
功能,这是没有问题的。但我们通常写一些子功能以外的准备功能,然后准备函数调用这些功能。该方案的这些功能无效,所以该方案具有局限性。
方案3(
推荐,尤其是在开发js
插件时):
给js内容提供一个函数
复制代码代码如下所示:
函数($){
您的js代码在这里(例如,提到了第二个
程序就绪函数和函数)
如果js文件在文件中,实际上是每行代码的头和尾。
}
也许
复制代码代码如下所示:
(函数($){)
您的js代码
}(jQuery);
如果没有上述两种方案的缺点,这种
方法只会影响代码中包含的函数($){。
没有其他的js代码的影响是很重要的。想象一下,如果你写一个js的常用
组件,需要使用jQuery,为了提高鲁棒性,你需要考虑美元符号冲突问题。如果你使用程序1,其他人都在使用的时候,你必须遵守你的协议改变美元JS金额在您自己的代码要3美元,如果你使用解决方案3,你可以避免冲突的成分的影响,而不要求人们使用通用的组件来
修改他们的代码。