我有一个疑问,把$赋值给_$,那么 $就不存在了吗

来源:1-8 jQuery多库共存处理

陶士涵

2014-11-18 21:40

Var _jQuery = window.jQuery,
   _$ = window.$;

jQuery.noConflict = function( deep ) {
   if ( window.$ === jQuery ) {
       window.$ = _$;
   }
if ( deep && window.jQuery === jQuery ) {
       window.jQuery = _jQuery;
   }
   return jQuery;
};

写回答 关注

4回答

  • AndyAlien
    2015-08-02 12:45:29

    当加载jQueryxxx.js中:var _jQuery = window.jQuery, _$ = window.$的时候。还没有执行下面的 if(typeof noGlobal xxx){xxx} 这个代码段,此时 window.jQuery = window.$ = _$ = _jQuery = undefined。虽然后面继续加载到 if(typeof noGlobal){...} 之后,window.jQuery = window.$ = jQuery赋值完成之后,但前面加载过的_$和_jQuery 仍是undefined。 当我们调用jQuery.noConflict()的时候,此时 window.$ === jQuery成立,进而执行window.$ = _$;  而_$仍然是undefined。所以 window.$ = undefined也就间接相当于把 $ 销毁了

  • 745984265
    2015-06-19 11:44:58

    同问楼主,解决没

  • 艾伦Aaron
    2014-11-19 11:27:23

    因为你要先加载一个类$的命名空间的库!

  • 陶士涵
    2014-11-18 22:01:59

    在上面的代码调用之后$还是存在的啊?$还是jquery的对象啊?为什么jquery里面调用这个noconflict后之后就会把$销毁了呢

jQuery源码解析(架构与依赖模块)

由浅入深地剖析jQuery库的设计与实现,揭开框架背后的秘密

84049 学习 · 280 问题

查看课程

相似问题