• jquery noConflict详解


    noConflict是防止其他库也用了$作为全局变量而引起的冲突,我们看看jquery是怎么做的

    首先jquery在代码的开始部分定义了2个私有变量:

    _jQuery = window.jQuery
    
    _$ = window.$

    然后jquery提供了noConflict方法:

     1 noConflict: function( deep ) {
     2         if ( window.$ === jQuery ) {
     3             window.$ = _$;
     4         }
     5 
     6         if ( deep && window.jQuery === jQuery ) {
     7             window.jQuery = _jQuery;
     8         }
     9 
    10         return jQuery;
    11     },

    我们平时是这样用的:

    <script src="jquery.js"></script>
    
    <script>
    
      $('div'); 
    
    </script>


    这种情况_jQuery和_$都是undefined。

    当引入了其他库:

    <script src="jquery.js"></script>
    
    var JQ = $.noConflict();
    
    var $ = 123;//假设123是其他库
    
    JQ(function(){
    
      alert($); //123
    
    });

    这种情况_jQuery和_$都是undefined。我们看源码可以知道$.noConflict()返回了JQuery对象,所以此时JQ就是JQuery对象,jquery放弃了$。

    再看一种情况:

    var $ = 123;//假设123是其他库
    
    <script src="jquery.js"></script>
    
    var JQ = $.noConflict();
    
    JQ(function(){
    
      alert($); //123
    
    });

    $在引入jquery库之前被引入了,此时_$就是$ = 123,然后在noConflict函数中再把_$赋值给window.$

    如果引入的其他框架变量为JQuery就要这样用:

    var JQuery = 123;//假设123是其他库
    
    <script src="jquery.js"></script>
    
    var JQ = $.noConflict(true); //加了一个参数,看源码就明白啦
    
    JQ(function(){
    
      alert(JQuery); //123
    
    });
  • 相关阅读:
    centos7 mongodb3.4 安装
    centos7 开放端口号
    Junit4测试Spring
    selenium浏览器内核监测处理
    mitmproxy(TLS错误)
    爬虫计算两张验证图片的距离(情况一)
    git的git bash使用
    算法
    RBAC权限管理设计
    beego框架返回json数据
  • 原文地址:https://www.cnblogs.com/gongshunkai/p/5833645.html
Copyright © 2020-2023  润新知