jquery中的noConflict方法详解


在网上看到关于noConflict的解释,好多人估计一眼就看出来了,所以写的很简略,而我总感觉被绕在里面。然后看到一个人写的蛮详细的,也挺容易理解的,但是越看越不对,虽然详细,但是好像理解有点误。


涉及到noConflict函数的主要有下面这些代码:

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

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

	return jQuery;
};
if ( !noGlobal ) {
	
	window.jQuery = window.$ = jQuery;
}
举个例子:
<script type="text/javascript">
 var $ = "abc1";
</script>
<script type="text/javascript" src="jquery-3.2.1.js"></script>
<script type="text/javascript">
  var jq = jQuery.noConflict();
  console.log($);  //这里输出的是 abc1
</script>
 

在var $= "abc1"的时候 window.$ = "abc1",所以当加载到jquery文件的时候,有一个_$ = window.$ ,

此时_$="abc1",window.$=jQuery;

此时$和jQuery均指向jQuery,而值“abc1”被存储在jquery中的_$中,所以当调用noConflict函数的时候判断window.$ ===jQuery 的时候是相等的,再把_$的值就是"abc1"重新赋值给$,此时window.$的值就变为了“abc1”。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值