jQuery中的noConflict

一、 jquery-1.12.1.js中的实现

var
  // Map over jQuery in case of overwrite
  _jQuery = window.jQuery,
  // Map over the $ in case of overwrite
  _$ = window.$;
jQuery.noConflict = function(deep) {
  if (window.$ === jQuery) {
    window.$ = _$;
  }
  
  if (deep && window.jQuery === jQuery) {
    window.jQuery = _jQuery;
  }
  
  return jQuery;
};

二、 解释

  • _jQuery_$将可能存在的同名变量先存储起来;
  • 将原先存在的$放回 window.$
  • deep为true时,完全将 jQuery移到一个新的命名空间;

三、使用

  • jquery在其他库之后导入

    1. 执行以下语句交出$的控制权,仍可以使用jQuery命名空间
    jQuery.noConflict();
    
    1. 获取jQuery命名空间的引用,后续使用该引用即可正常使用jQuery
    var  $JQ = jQuery.noConflict();
    
  • jquery在其他库之前导入
    可以直接使用jQuery命名空间,$可能被重写为其他库的引用

posted @ 2016-08-09 11:24  treeland  阅读(115)  评论(0编辑  收藏  举报