时间:2021-05-26
jQuery中,noconflict是用来防止变量冲突,用来释放变量控制权的一个重要方法。我们知道,jQuery中对外提供有两个全局变量,$和jQuery,虽然jQuery只产生了两个全局变量,极少情况下才会出现冲突,但是如果网页中如果包涵较多的类库,有自定义$或jQuery全局变量的存在时,就产生冲突。
jQuery提供的noconflict函数很好的解决了变量冲突问题,无论是$或者jQuery冲突都可以解决,接下来我们就来分析一下jQuery的冲突处理。
先来看一下jQuery源码中noconflict的实现:
(function(window,undefined){var // Map over jQuery in case of overwrite_jQuery = window.jQuery,// Map over the $ in case of overwrite_$ = window.$,jQuery.extend({noConflict: function( deep ){ if ( window.$ === jQuery ) { window.$ = _$; } if ( deep && window.jQuery === jQuery ) { window.jQuery = _jQuery; } return jQuery;}})}(window)
在这里jQuery.extend是jQuery扩展静态属性的方法,这里可以看成直接在jQuery上附加noConflict方法。在匿名函数的内部,分别定义内部变量_jQuery和_$用来存储window.jQuery和window.$, 这么做的用作在于用内部变量保存jQuery运行之前这两个全局变量的状态, 以便在后面的防冲突操作中还原这两个变量。noConflict可处理$和jQuery这两个变量冲突的情况,默认处理$,传入一个true参数,则处理jQuery冲突的情况。
window.$ === jQuery用来判断全局变量是否等于jQuery,如果等于,则重新还原全局变量$为jQuery运行之前的变量(存储在内部变量 _$ 中);deep && window.jQuery === jQuery 当开启深度冲突处理并且全局变量jQuery等于内部jQuery,则把全局jQuery还原成之前的状况。判断window.$ === jQuery和window.jQuery=jQuery的意义在于保护已经定义的变量不被重写,如下面的代码:
整个运行流程参加下图:
noConflict返回的是jQuery库内部的jQuery构造函数, 像使用$一样尽情使用它吧!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
_jQuery=window.jQuery;_$=window.$;这两个变量是jQuery唯一使用的两个全局变量。在jQuery.noConflict()函数
复制代码代码如下:jQuery.noConflict();//UsejQueryviajQuery(…)jQuery(document).ready(funct
Javascript代码如下,将该代码保存成JS文件后在HTML中引用。复制代码代码如下:jQuery.noConflict();jQuery.fn.exten
本文实例讲述了jQuery中noConflict()用法。分享给大家供大家参考。具体分析如下:jQuery默认使用"$"操作符,$符号只是window.jQue
NVelocity的$与Jquery的$发生冲突时的解决方法有以下几个:1、使用jQuery.noConflict。如:varj=jQuery.noConfli