jQuery.noConflict()防冲突机制
2014-09-04 10:24
573 查看
许多JS库都非常喜欢使用$作为函数、变量。有时候,由于页面复杂的历史问题,或者为了实现特定的功能,我们不得不在页面中引入多个JS库。今儿个来学习学习jQuery库是怎么解决$冲突问题。(jQuery-1.7.1)
jQuery库全部使用自身的jQuery对象来完成内部实现。
在源码开头,有两行代码:
用来在调用jQuery.noConflict()函数时,检测全局环境中$ 和 jQuery变量是否被其它库覆盖。
在源码末尾,有一行代码:
用来定义全局的jQuery,$,引用自当前库的jQuery对象。
我们调用 jQuery.noConflict(),返回当前库未被覆盖的jQuery对象。
window.$ === jQuery,用来判断全局的$ 是否引用了当前jQuery对象
如果调用 jQuery.noConflict(true), 还会去检测全局的jQuery对象是否引用了当前的jQuery对象。
其实,我们也可以通过简单的修改上下文参数:
jQuery库全部使用自身的jQuery对象来完成内部实现。
在源码开头,有两行代码:
// Map over jQuery in case of overwrite _jQuery = window.jQuery, // Map over the $ in case of overwrite _$ = window.$,
用来在调用jQuery.noConflict()函数时,检测全局环境中$ 和 jQuery变量是否被其它库覆盖。
在源码末尾,有一行代码:
// Expose jQuery to the global object window.jQuery = window.$ = jQuery;
用来定义全局的jQuery,$,引用自当前库的jQuery对象。
jQuery.extend({ noConflict: function( deep ) { if ( window.$ === jQuery ) { window.$ = _$; } if ( deep && window.jQuery === jQuery ) { window.jQuery = _jQuery; } return jQuery; }, //...... }
我们调用 jQuery.noConflict(),返回当前库未被覆盖的jQuery对象。
window.$ === jQuery,用来判断全局的$ 是否引用了当前jQuery对象
如果调用 jQuery.noConflict(true), 还会去检测全局的jQuery对象是否引用了当前的jQuery对象。
其实,我们也可以通过简单的修改上下文参数:
//自执行函数 (function($){ })(jQuery); //相当于jQuery(document).ready(function($){}); jQuery(function($){ });
相关文章推荐
- 谈谈 jQuery 中的防冲突(noConflict)机制
- Jquery使用noConflict 实现多类防冲突的机制
- jQuery 中的防冲突(noConflict)机制
- jQuery中noConflict()机制的冲突解决方法
- jquery插件冲突(jquery.noconflict)解决方法分享
- 用jQuery.noConflict()防止$的冲突
- 避免jQuery名字冲突--noConflict()方法
- 用jQuery.noConflict()防止$的冲突
- jquery库与其他库冲突的问题解决-jquery.noConflict()
- jQuery 核心 - noConflict() 方法[避免冲突的方法]
- jQuery noConflict() 方法----与其他javaScript插件冲突时
- jQuery库(noConflict)冲突解决机制
- jQuery库(noConflict)冲突解决机制
- jQuery 核心 - noConflict() 方法[避免冲突的方法]
- 防止$冲突的方法jQuery.noConflict()
- jquery库与其他库冲突的问题解决-jquery.noConflict()
- 解决jquery在多插件中$冲突问题---jQuery.noConflict()方法
- 赏"金"猎人-Prototype.js与jQuery.js冲突,noConflict未果
- 解决jQuery引入多个库的冲突问题 jQuery.noConflict( [removeAll ] )
- 用jQuery.noConflict()防止$的冲突