关于jQuery中的$发生冲突及解决方案

问题描述:

  在Jquery库中,$是JQuery的别名,所有使用$的地方也都可以使用JQuery来替换,如$('#msg')等同于JQuery('#msg')的写法。

  当引入多个js库后,其它的js库中也定义了$符号的话,就导致在使用$命名符时jquery的$和其它框架的$产生冲突(这里的冲突也和js库文件的引入顺序有关)。

情况举例:

复制代码
//  js引入顺序不同的结果 ($ 永远代表最后一个定义$的js库的符号)

// --1
<script src="prototype.js" type="text/javascript"/>
<script src="jquery.js" type="text/javascript"/>
// -- $代表的是jquery中定义的$符号,也可写成JQuery('body').hide()。

// --2
<script src="jquery.js" type="text/javascript"/>
<script src="prototype.js" type="text/javascript"/>
// -- $代表的prototype.js中定义的$符号,如果我们想要调用jquery.js中的工厂选择函数功能的话,只能用全称写法JQuery('body').hide()。

解决冲突:

  jquery提供了一个noConfilict的API来解决。

使用 noConflict() 方法为 jQuery 变量规定新的名称:

var jq=$.noConflict();

定义和用法

noConflict() 方法让渡变量 $ 的 jQuery 控制权。

该方法释放 jQuery 对 $ 变量的控制。

该方法也可用于为 jQuery 变量规定新的自定义名称。

提示:在其他 JavaScript 库为其函数使用 $ 时,该方法很有用。

语法:

jQuery.noConflict(removeAll)

说明

许多 JavaScript 库使用 $ 作为函数或变量名,jQuery 也一样。在 jQuery 中,$ 仅仅是 jQuery 的别名,因此即使不使用 $ 也能保证所有功能性。假如我们需要使用 jQuery 之外的另一 JavaScript 库,我们可以通过调用 $.noConflict() 向该库返回控制权:

<script type="text/javascript" src="other_lib.js"></script>
<script type="text/javascript" src="jquery.js"></script>

<script type="text/javascript">
  $.noConflict();
  // 使用另一个库的 $ 的代码
</script>

可以与 .ready() 方法结合起来使用,来为 jQuery 对象起别名,这项技术非常有效:

<script type="text/javascript" src="other_lib.js"></script>
<script type="text/javascript" src="jquery.js"></script>

<script type="text/javascript">
  $.noConflict();
  jQuery(document).ready(function($) {
    // 使用 jQuery $ 的代码
  });
  // 使用其他库的 $ 的代码
</script>

此外,通过向该方法传递参数 true,我们可以将 $ 和 jQuery 的控制权都交还给原来的库。用之前请考虑清楚!

这是相对于简单的 noConflict 方法更极端的版本,因为这将完全重新定义 jQuery。这通常用于一种极端的情况,比如你想要将 jQuery 嵌入一个高度冲突的环境。注意:调用此方法后极有可能导致插件失效。

 


实例

例子 1

将 $ 引用的对象映射回原始的对象:

jQuery.noConflict();

jQuery("div p").hide();    // 使用 jQuery

$("content").style.display = "none";    // 使用其他库的 $()

例子 2

恢复使用别名 $,然后创建并执行一个函数,在这个函数的作用域中仍然将 $ 作为 jQuery 的别名来使用。在这个函数中,原来的 $ 对象是无效的。这个函数对于大多数不依赖于其他库的插件都十分有效:

jQuery.noConflict();

(function($) { 
  $(function() {
    // 使用 $ 作为 jQuery 别名的代码
  });
})(jQuery);

... // 其他用 $ 作为别名的库的代码

例子 3

可以将 jQuery.noConflict() 与简写的 ready 结合,使代码更紧凑:

jQuery.noConflict()(function(){
    // 使用 jQuery 的代码
});

... // 其他库使用 $ 做别名的代码

例子 4

创建一个新的别名用以在接下来的库中使用 jQuery 对象:

var j = jQuery.noConflict();

j("div p").hide();    // 基于 jQuery 的代码

$("content").style.display = "none";    // 基于其他库的 $() 代码

例子 5

完全将 jQuery 移到一个新的命名空间:

var dom = {};
dom.query = jQuery.noConflict(true);

结果:

dom.query("div p").hide();    // 新 jQuery 的代码

$("content").style.display = "none";    // 另一个库 $() 的代码

jQuery("div > p").hide();    // 另一个版本 jQuery 的代码

转载于:https://www.cnblogs.com/ckwblogs/p/6591051.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 对于你的问题,我可以为你提供一些可能的解决方法。首先,您可以尝试将jQuery库链接到您的页面。如果您已经这样做了,请检查控制台是否存在任何错误消息。另外,请确保您的jQuery代码与您的HTML代码正确匹配,并且没有任何语法错误。最后,您可能需要检查jQuery插件是否与您使用的jQuery版本兼容。希望这些提示能够帮助您解决问题。 ### 回答2: jQuery有时会失效的原因有很多,下面列举几个常见的情况。 1. jQuery库未正确引入:在使用jQuery之前,需要在HTML页面正确引入jQuery库文件。如果没有正确引入,或者引入的文件路径错误,就会导致jQuery无法使用。 2. jQuery版本不兼容:有些jQuery方法或特性只在特定版本有效,如果使用的是不兼容的jQuery版本,就会导致部分功能失效。 3. 语法错误:使用jQuery时,需要遵循正确的语法和规范。如果在编写代码过程存在语法错误,就会导致jQuery部分或全部功能失效。 4. 元素未正确选:在使用jQuery对页面元素进行操作时,需要确保正确选目标元素。如果选择器选择的元素不存在、或者选择器写法错误,就会导致jQuery失效。 5. 代码执行时机不正确:有时候,需要在DOM加载完成后再执行jQuery代码。如果在DOM尚未加载完成时执行jQuery代码,就会导致部分功能失效。 6. 与其他库的冲突:如果同时使用了多个库,可能会出现冲突的情况。例如,与Prototype库或其他JavaScript库同时使用时,可能会导致jQuery失效。 解决这些问题的方法包括:检查库文件是否正确引入、确认选择器是否正确、验证代码的语法是否正确、确保代码执行时机正确、排查与其他库的冲突等。 总而言之,jQuery有时失效可能是由于引入问题、版本不兼容、语法错误、元素选择错误、代码执行时机不正确或与其他库冲突等原因导致的,解决方法是仔细检查代码,确保上述问题都得到正确处理。 ### 回答3: jQuery有时会失效的原因有很多,下面列举几个可能的情况。 首先,可能是由于jQuery版本问题。如果使用的是旧版本的jQuery,那么可能会有一些新功能无法正常使用或存在一些已知的bug。解决方法是更新到最新版本的jQuery。 其次,可能是由于代码编写错误。在使用jQuery时,需要确保语法和方法的使用都是正确的。比如,可能漏写了括号、分号或双引号,或者方法名写错了等。可以通过仔细检查代码并参考jQuery的官方文档来解决这些问题。 再次,可能是由于DOM元素未加载完全。如果在页面加载完成之前就执行了jQuery代码,那么可能会导致无法找到相关的DOM元素,从而导致jQuery失效。解决方法是将jQuery代码放在文档就绪事件(document.ready)里面,确保页面加载完全后再执行jQuery操作。 另外,可能是由于与其他插件或库的冲突。如果页面同时使用了多个jQuery插件或其他JavaScript库,可能会出现命名冲突或方法重复定义的问题,导致jQuery失效。解决方法是排查冲突,并确保各个插件或库之间的兼容性。 最后,可能是由于浏览器的兼容性问题。不同的浏览器对JavaScriptjQuery的支持程度不同,可能会导致一些代码在某些浏览器失效。解决方法是查阅浏览器的兼容性文档,并根据需要进行相应的调整或使用兼容性更好的解决方案。 综上所述,jQuery有时失效的原因包括版本问题、代码错误、DOM加载顺序、与其他插件冲突以及浏览器兼容性问题等。要解决这些问题,需要仔细检查代码、更新版本、确保DOM加载完全、排查冲突并考虑浏览器兼容性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值