对jquery的conflict方法的解读

源码:

noConflict: function( deep ) {
    if ( window.$ === jQuery ) {
        window.$ = _$;
    }

    if ( deep && window.jQuery === jQuery ) {
        window.jQuery = _jQuery;
    }

    return jQuery;
},
引入jQuery类库后,闭包外面的window.$与window.jQuery都储存着一个函数,它是用来生成jQuery对象或在domReady后执行里面的函数的。
回顾我上一篇文章,那里有写什么时候给它们进行赋值。在还没有把function赋给它们时,_jQuery与_$已经被赋值了,因此它们俩的值一定必然是undefined。
因此这种放弃对$和jQuery的控制权的技术很简单,就是用undefined把window.$里面的jQuery系的函数清除掉,这样别的框架就可以使用它们了。
在window.$ = _$。相当于是window.$ = undefined。
如果连你的程序也有一个叫jQuery的东西呢,jQuery可以大方地连这个也让渡出去,这时就要为noConflict添加一个布尔值,为true。
但我们必须用一个东西要接纳jQuery对象与jQuery的入口函数,闭包里面的东西除非被window等宿主对象引用,否则就是不可见的,因此我们把闭包里面的jQuery return出去,外面用一个变量接纳就是。

posted on 2012-08-09 13:56  TonyCoolZhu  阅读(764)  评论(0编辑  收藏  举报

导航