jQuery无冲突处理方案

有一些特殊情况,jQuery可能会与其他的类库同时存在,比如zepto(通常是在某些人犯迷糊的时候)。

在这个时候“$”这个命名空间会出现冲突(或覆盖)。

简单的做法我们可以用“jQuery”或“Zepto”来替代“$”,并在代码中建立属于相关类库的作用域即可,作为命名空间来避免冲突。

那么有没有其他的办法呢。

 

jQuery 核心 – noConflict() 方法

在jquery里面有一个这样的方法可以改变jQuery的命名空间。

可以去看w3cSchool里面的解释

在《JavaScript框架设计》的第一章中就两次提到了这个方案。

我这里cv一下jquery的源代码供参考
//jquery1.2
var _jQuery = window.jQuery , _$ = window.$;
jQuery.extend({
noConflict: function(deep){
window.$ = _$;
if(deep)
window.jQuery = _jQuery
return jQuery;
}
})

要注意的是该方法只对单文件的类库框架有用。

如何对动态加载方式引入的文件解决冲突问题之后再做讨论,不在这里赘述。

发表评论