jQuery之noConflict方法

源码如下:

  var

    // Map over jQuery in case of overwrite
        _jQuery = window.jQuery,

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

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

        return jQuery;
    };

// Expose jQuery and $ identifiers, even in AMD
// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
// and CommonJS for browser emulators (#13566)
    if ( !noGlobal ) {
        window.jQuery = window.$ = jQuery;
    }

第一种情况:

    <script src="./jquery3.2.1.js"></script>
    <script>
        var $ = 111;
        $(function(){
            console.log('11111111')
        }) 
    </script>

当给$赋值111时,会引起变量名冲突,$名字被别人占用,代码无法执行。

   <script>
        var jq = $.noConflict()
        var $ = 111;
        jq(function(){
            console..log('11111111')
        }) 
    </script>

这时noConflict()方法派上了用场,给jQuery取了别名jq,$让给别人,解决变量名冲突。

第二种情况:

    <script>
        var $ = 11111;
    </script>
    <script src="./jquery3.2.1.js"></script>
    <script>
        var jq = $.noConflict()
        jq(function(){
            console.log($) // 1111
        }) 
    </script>

看源码知道在加载jquery时,已经把冲突的变量名的值存到_jQuery或者_$; 加载jquery后 ,$又变成jQuery ,用noConflict方法解决变量名冲突后,jquery放弃使用$或者jQuery的名字,把_jQuery 或者_$的值重新赋给$或者jQuery,jquery使用jq别名。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 请记得在进行JQuery类库的运用时,加入JQuery类库,并且要保证先写文档就绪函数 $(document).r...
    Sunshinemm阅读 3,006评论 1 40
  • 1.几种基本数据类型?复杂数据类型?值类型和引用数据类型?堆栈数据结构? 基本数据类型:Undefined、Nul...
    极乐君阅读 5,850评论 0 106
  • 前几天夜里,我跟胖子还有他的夫人在华科大深处的一棵树下,挖了一个漂亮的方形坑,埋下了他们刚刚逝去的狗。 我们也不是...
    白眼妮妮阅读 678评论 0 49
  • 1. 小时候,我住在一个大的四合院里。那会大院的对门住着一位张大爷,60好几的年纪,早已退休闲赋在家多年,最喜欢在...
    卜默阅读 1,307评论 5 14
  • 很久很久以前,阳光还很刺眼的很多个下午,厚重的蓝色窗帘挡住了明亮,光从狭小的缝隙里钻进来,投射到我的课桌上,张张在...
    Hebetow阅读 445评论 0 1

友情链接更多精彩内容