为了账号安全,请及时绑定邮箱和手机立即绑定

还是不懂怎么把$交出去的。。

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

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

看了半天还是没懂怎么实现把$交出去的。。完全没理解。。。望大神解答具体的流程。。

正在回答

5 回答

之前的_$和_jQuery是没有内容的

0 回复 有任何疑惑可以回复我~
var
	// Map over jQuery in case of overwrite
	_jQuery = window.jQuery,

	// Map over the $ in case of overwrite
	_$ = window.$;
	
// 这边是说保存jQuery和$以防被重写覆盖了,这些代码是jq引入时自执行的,
// 此时的window.jQuery或window.$都很有可能是undefined,如果引入jq之前没有其他库使用了$和jQuery,
// $.noConfilct()这种用法就是 将引入jq之前的window.$ 赋值给window.$,乍看很奇怪,其实就是
// 通过 上面的_$ = window.$先保存, 然后$.noConfilct()里面, window.$ = _$, 此时就完成了
// jq库放弃window.$的使用权,  此时window.$是什么呢, 在引入jq之前, $是什么,现在就是什么,
// 比如undefined 或者是prototype.js中的$

// 同理如果$.noConfilct(true) 那么jq库也放弃了window.jQuery的使用权

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

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

	return jQuery;
};


10 回复 有任何疑惑可以回复我~
#1

proto

这个解释的对。
2016-05-02 回复 有任何疑惑可以回复我~
#2

proto

这个要给人家置顶啊这么好的答案
2016-05-02 回复 有任何疑惑可以回复我~

我也不是很理解,这段代码应该是把$ 和jQuery保存到未定义的_$和——jQuery中,然后判断是否已经解析完function后,如果执行noConfilct就把那个undefined的东东穿给$

0 回复 有任何疑惑可以回复我~

汗。。再看了看又理解了。。脑子没转过来 哈哈哈

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

还是不懂怎么把$交出去的。。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信