`
jishublog
  • 浏览: 870683 次
文章分类
社区版块
存档分类
最新评论

解决jQuery与其他库冲突的方法

 
阅读更多


通常,当在同一个页面上使用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,第二种方法是通过返回值来,第三种方式把$号传入,第四种方式通过匿名方式将jquery传入

    jQuery与其他JS库或jQuery文件冲突解决方法

    本人亲测,本人网页有两个JS效果,用到了两个jQuery文件(一个是jquery.min.js,另一个是jquery.pack.js),可以两个冲突,只能保留一个。 但效果就只能有一个。我想两个都保留,于是就想了很多办法,查了很多资料,...

    快速解决jQuery与其他库冲突的方法介绍

    本篇文章主要是对快速解决jQuery与其他库冲突的方法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助

    jQuery与其它库冲突的解决方法

    在jQuery库中,几乎所有的插件都被限制在它的命名空间里。全局的对象都很好地存储在jQuery命名空间里,因此当把jQuery和其它javascript类库一起使用时,不会引起冲突.

    jquery 与NVelocity 产生冲突的解决方法

    NVelocity的$与Jquery的$发生冲突时的解决方法有以下几个: 1、 使用jQuery.noConflict。 如:var j = jQuery.noConflict(); j.ajax(); 缺点:当使用jQuery的相关插件时,会使得插件失效哦! 2、 使用jQuery代替$. 如...

    如何解决jQuery 和其他JS库的冲突

    主要介绍了解决 jQuery 和其他库的冲突的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下

    jQuery库与其他JS库冲突的解决办法

    jQuery库与其他JS库冲突的解决办法

    jQuery多个版本和其他js库冲突的解决方法

    jQuery多个版本或和其他js库冲突主要是常用的$符号的问题,该怎么解决呢?下面小编给大家带来了jQuery多个版本和其他js库冲突的解决方法,一起看下吧

    如何解决Jquery库及其他库之间的$命名冲突

    介绍了Jquery库及其他库之间的$命名冲突的解决方法,有需要的朋友可以参考一下

    解决jquery中美元符号命名冲突问题

    然而,当我们引入多个js库后,在另外一个js库中也定义了$符号的话,那么我们在使用$符号时就发生了冲突。下面以引入两个库文件 jquery.js和prototype.js为例来进行说明。 第一种情况:jquery.js在prototype.js之后...

    解决jquery插件冲突的问题

    这有助于确保jQuery不会与其他库的$对象发生冲突。 在运行这个函数后,就只能使用jQuery变量访问jQuery对象。例如,在要用到$(“div p”)的地方,就必须换成jQuery(“div p”)。 ”’注意:”’这

    让jQuery与其他JavaScript库并存避免冲突的方法

    为了解决jQuery和其他JavaScript库中$()函数的冲突,需要取消jQuery的$()函数,为此jQuery提供了如下方法: 代码如下: //取消jQuery中的$()函数 jQuery.noConflict() ; 将上面的粗体字代码放在JavaScript代码的第一...

    关于jQuery库冲突的完美解决办法

    在使用jQuery开发的时候,可能还会使用到其他的JS库,比如Prototype,但多库共存时可能会发生冲突,下面这篇文章主要给大家介绍了关于jQuery库冲突的完美解决办法,需要的朋友可以参考借鉴,下面来一起看看吧。

    锋利的jQuery pdf + 示例代码

    《锋利的jQuery》适合所有对jQuery技术感兴趣的Web设计者和前端开发人员阅读和参考。 目录 第1章 认识jQuery 1 ...1.5 解决jQuery和其他库的冲突 16 1.6 jQuery开发工具和插件 18 1.7 小结 22

    jQuery $命名冲突解决方案汇总

    最近遇到个问题,同时引用了jquery库和另外一个js库。当用$XX去调用js库函数时,发现失效了!于是找资料,原来是jquery命名冲突了。因为许多JavaScript 库使用$作为函数或变量名,jquery也一样。其实$只是jquery的一...

    jquery插件使用方法大全

    可以用来添加不向外部公开的方法,或者对jQuery的某些方法进行重新定义以提供新功能,或者提供更好的封装、避免名称空间冲突。当然,也可以用来开发插件,但Resig强烈建议在开发插件之前,先考虑jQuery UI widget...

Global site tag (gtag.js) - Google Analytics