jQuery学习笔记——jQuery和其他库冲突的解决办法
2013-04-24 16:08
127 查看
一般来说,$符号是最容易引发冲突的地方。jQuery使用$作为jQuery名称的别名,因此jQuery所展示的每个功能都用到$。但是其他库,如常见的Prototype也使用$名称。
所幸还好,jQuery提供了$.noConfict() 实用工具函数,用于放弃对$名称的控制,把$符号让给其他任何库。
因为$只是jQuery的别名,所有在应用$.noConfic() 之后jQuery的全部功能依然可用,只是要使用jQuery标示。
当然也可以通过自定义的方式给jQuery定义一个更短的、不会引起冲突的别名:
var $j=jQuery;
另一个经常采取的习惯用法是创建一个环境,在里面$名称的作用域被设定为引用jQuery对象。
(function($) { /* some functions */ })(jQuery);
函数说明:前面部分(function($){ }) 声明了一个函数,用圆括号括起来,由此构成一个表达式,这个匿名函数的引用作为表示式的值而被返回。函数需要一个名为$的参数。在函数体内,可以利用$标示符引用任何传递给这个函数的东西。因为参数声明优先于在全局作用域里的任何同名标示符,所以在这个函数外面为$定义的任何值在函数内被传入的参数所取代。
(jQuery)——传递jQuery对象所谓匿名函数的实参。
因此在匿名函数体内,jQuery对象被$名称所引用,而不管在匿名函数外面,是否$名称已经为Prototype或其他库所定义。即:使用这个技巧,在匿名函数体内,$的外部声明是不可用的。
上述习惯用法还有以下变形:
jQuery(function($){
alert("I'm ready!");
});
通过传递一个函数作为jQuery函数的参数,由此把这个函数声明为就绪处理程序。$标示符作为单个参数传递给就绪处理程序。因为jQuery总是把jQuery对象的引用作为唯一的第一个参数传递给就绪处理程序,所以这保证了在就绪处理程序内jQuery对象被$名称所引用,而不管在就绪处理函数体的外面,是否$名称已经被定义。
注:部分内容节选自《jQuery实战》一书
所幸还好,jQuery提供了$.noConfict() 实用工具函数,用于放弃对$名称的控制,把$符号让给其他任何库。
因为$只是jQuery的别名,所有在应用$.noConfic() 之后jQuery的全部功能依然可用,只是要使用jQuery标示。
当然也可以通过自定义的方式给jQuery定义一个更短的、不会引起冲突的别名:
var $j=jQuery;
另一个经常采取的习惯用法是创建一个环境,在里面$名称的作用域被设定为引用jQuery对象。
(function($) { /* some functions */ })(jQuery);
函数说明:前面部分(function($){ }) 声明了一个函数,用圆括号括起来,由此构成一个表达式,这个匿名函数的引用作为表示式的值而被返回。函数需要一个名为$的参数。在函数体内,可以利用$标示符引用任何传递给这个函数的东西。因为参数声明优先于在全局作用域里的任何同名标示符,所以在这个函数外面为$定义的任何值在函数内被传入的参数所取代。
(jQuery)——传递jQuery对象所谓匿名函数的实参。
因此在匿名函数体内,jQuery对象被$名称所引用,而不管在匿名函数外面,是否$名称已经为Prototype或其他库所定义。即:使用这个技巧,在匿名函数体内,$的外部声明是不可用的。
上述习惯用法还有以下变形:
jQuery(function($){
alert("I'm ready!");
});
通过传递一个函数作为jQuery函数的参数,由此把这个函数声明为就绪处理程序。$标示符作为单个参数传递给就绪处理程序。因为jQuery总是把jQuery对象的引用作为唯一的第一个参数传递给就绪处理程序,所以这保证了在就绪处理程序内jQuery对象被$名称所引用,而不管在就绪处理函数体的外面,是否$名称已经被定义。
注:部分内容节选自《jQuery实战》一书
相关文章推荐
- Jquery与其他js起冲突的解决办法
- jquery与其他包冲突的解决办法
- jquery与其他包冲突的解决办法
- jQuery库与其他JS库冲突的解决办法(转)
- jQuery库与其他JS库冲突的解决办法
- jQuery库与其他JS库冲突的解决办法
- Jquery库及其他库之间的$命名冲突解决办法
- jQuery库与其他JS库冲突的解决办法
- 默认库“library”与其他库的使用冲突;请使用 /NODEFAULTLIB:library LNK4098 的解决办法
- ecshop transport.js 和 jquery 冲突解决办法
- jQuery和prototype冲突的解决办法:
- jQuery.noConflict() 方法—— jquery库与其他库冲突的问题解决
- QQ悬浮客服跟其他JQ冲突的解决办法
- (function($, window, document) {}) jQuery 调用解决与其他javascript库冲突的写法
- JQuery选取器与其它JS框架冲突的解决方法 确保jQuery不会与其他库的$对象发生冲突
- 默认库“library”与其他库的使用冲突;请使用 /NODEFAULTLIB:library LNK4098 的解决办法
- jquery与其他js包冲突时的解决办法
- 解决同一页面jQuery多个版本或和其他js库冲突方法
- 1.5: 解决jQuery和其他库的冲突
- Discuz和jQuery选择符$冲突的解决办法