通常,当在同一个页面上使用jQuery和其他库时,全局名称$的定义是最大的争论和冲突的焦点。众所周知,jQuery使用$作为jQuery名称的别名,并将其用于jQuery公开的每一个功能,但是其他库,最著名的就是Prototype,也使用$名称。
1. jQuery提供了$.noConflict()实用函数用来放弃对$标识符的占用,以便其他库使用它。
该函数的语法如下:
$.noConflict(jqueryToo)
将标识符$的控制权归还给其他库,允许在页面上混合使用jQuery与其他库。一旦执行了该函数,必须使用jQuery标识符而不是$标识符来调用jQuery的功能,
你也可以放弃jQuery标识符(可选)
应该在包含了jQuery之后,但尚未包含冲突库之前调用这个方法。
尽管使用的是jQuery标识符,但因为$是jQuery的别名,所以在应用$.noConflict()之后所有jQuery的功能依然可用。我们可以定义更短的,但没有冲突的jQuery别名,例如
var $j = jQuery ;
2. 另一个常见的习惯用法是创建一个作用域环境,在该环境中$标识符指向jQuery对象,在扩展jQuery的时候这是个常用技巧,特别是对于插件作者来说,他们不可能对于页面开发者是否已经调用$.noConflict()作出任何假设,当然也不能自行调用此函数以免破坏页面开发者的意愿,
这个习惯用法如下:
(function($) { }) (jQuery);
(function($) { })
这部分声明了一个函数并用圆括号括起来,由此生成一个表达式,这个表达式的结果是对一个匿名函数的引用,这个函数期望传入单个参数并将其命名为$,在函数主体中,可以通过$标识符来引用任何传递给这个函数的东西。因为参数声明优先于全局作用域中任何类似的命名标识符,所以任何在函数外定义的$值在函数内都会被传入的参数所代替。
(jQuery)
在匿名函数上执行函数调用,将jQuery对象作为参数传递
在函数外部不管$标识符是否已经在Prototype或其他库中定义,在函数体内它总是指向jQuery对象。
当使用这个技巧时,外部声明的$在函数体内是不可用的。
3. 第二种的用法的一个变体也经常用于声明就绪处理函数,从而形成了第三种语法,
jQuery( function($){
})
当编写可重用的组件并且这些组件可能会用于已经使用了$.noConflict()的页面时,最好对$的定义采取这种预防措施。
分享到:
相关推荐
解决了Jquery和其他库之间的冲突 第一种方式就是直接使用JQuery,第二种方法是通过返回值来,第三种方式把$号传入,第四种方式通过匿名方式将jquery传入
本人亲测,本人网页有两个JS效果,用到了两个jQuery文件(一个是jquery.min.js,另一个是jquery.pack.js),可以两个冲突,只能保留一个。 但效果就只能有一个。我想两个都保留,于是就想了很多办法,查了很多资料,...
本篇文章主要是对快速解决jQuery与其他库冲突的方法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
在jQuery库中,几乎所有的插件都被限制在它的命名空间里。全局的对象都很好地存储在jQuery命名空间里,因此当把jQuery和其它javascript类库一起使用时,不会引起冲突.
NVelocity的$与Jquery的$发生冲突时的解决方法有以下几个: 1、 使用jQuery.noConflict。 如:var j = jQuery.noConflict(); j.ajax(); 缺点:当使用jQuery的相关插件时,会使得插件失效哦! 2、 使用jQuery代替$. 如...
主要介绍了解决 jQuery 和其他库的冲突的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
jQuery库与其他JS库冲突的解决办法
jQuery多个版本或和其他js库冲突主要是常用的$符号的问题,该怎么解决呢?下面小编给大家带来了jQuery多个版本和其他js库冲突的解决方法,一起看下吧
介绍了Jquery库及其他库之间的$命名冲突的解决方法,有需要的朋友可以参考一下
然而,当我们引入多个js库后,在另外一个js库中也定义了$符号的话,那么我们在使用$符号时就发生了冲突。下面以引入两个库文件 jquery.js和prototype.js为例来进行说明。 第一种情况:jquery.js在prototype.js之后...
这有助于确保jQuery不会与其他库的$对象发生冲突。 在运行这个函数后,就只能使用jQuery变量访问jQuery对象。例如,在要用到$(“div p”)的地方,就必须换成jQuery(“div p”)。 ”’注意:”’这
为了解决jQuery和其他JavaScript库中$()函数的冲突,需要取消jQuery的$()函数,为此jQuery提供了如下方法: 代码如下: //取消jQuery中的$()函数 jQuery.noConflict() ; 将上面的粗体字代码放在JavaScript代码的第一...
在使用jQuery开发的时候,可能还会使用到其他的JS库,比如Prototype,但多库共存时可能会发生冲突,下面这篇文章主要给大家介绍了关于jQuery库冲突的完美解决办法,需要的朋友可以参考借鉴,下面来一起看看吧。
《锋利的jQuery》适合所有对jQuery技术感兴趣的Web设计者和前端开发人员阅读和参考。 目录 第1章 认识jQuery 1 ...1.5 解决jQuery和其他库的冲突 16 1.6 jQuery开发工具和插件 18 1.7 小结 22
最近遇到个问题,同时引用了jquery库和另外一个js库。当用$XX去调用js库函数时,发现失效了!于是找资料,原来是jquery命名冲突了。因为许多JavaScript 库使用$作为函数或变量名,jquery也一样。其实$只是jquery的一...
可以用来添加不向外部公开的方法,或者对jQuery的某些方法进行重新定义以提供新功能,或者提供更好的封装、避免名称空间冲突。当然,也可以用来开发插件,但Resig强烈建议在开发插件之前,先考虑jQuery UI widget...