当一个项目引入多个第三方库的时候,由于没有命名空间的约束(命名空间就好比同一个目录下的文件夹一样,名字相同就会引发冲突),库与库之间的冲突在所难免。
既然有冲突问题存在,为什么还要应用多个库呢?是因为jQuery不过是一个DOM操作为主的库,方便我们日常WEB的开发,但有时候我们的项目可能需要应用其他的库来解决一些特殊的问题。例如UI库,游戏库等等。
例如prototype库等等,或者自己定义的使用到了$符号的库,该如何解决呢?例如我们有一个自己开发的Base库,也是用到了$符号,一般情况下有两种解决方法
1、将jQuery库在Base库之前引用,那么“$”的所有权就交给了Base库,而jQuery可以直接使用jQuery对象调用,或者创建一个"$$"给jQuery使用。
//假设我们的Base库中有一个ge()方法
var $$ = jQuery;
$(function(){
alert($("#box").ge(0));
alert($$("#box").width());
})
2、如果jQuery库在Base库之后引用,那么“$”所有权归jQuery所有,而Base库将会因为冲突而失去作用,在这里jQuery提供了一个方法
jQuery.noConflict(); //自我摧毁,将$所有权剔除
var $$ = jQuery;
$(function(){
alert($("#box").ge(0));
alert($$("#box").width());
})