化解jQuery与其余库抵触的主意

作者:ca88

日常,当在同一个页面上行使jQuery和另外库时,全局名称$的定义是最大的争执和争论的大旨。家喻户晓,jQuery使用$作为jQuery名称的小名,并将其用于jQuery公开的每多个职能,可是任何库,最盛名的正是Prototype,也运用$名称。

    经常,当在同三个页面上利用jQuery和另外库时,全局名称$的概念是最大的抵触和顶牛的要点。门到户说,jQuery使用$作为jQuery名称的别称,并将其用来jQuery公开的每一个效能,不过别的库,最显赫的正是Prototype,也选取$名称。

在Jquery中,$是JQuery的小名,全体应用$的地方也都得以选择JQuery来替换,如$('#msg')等同于JQuery('#msg')的写法。然则,当我们引进两个js库后,在其它三个js库中也定义了$符号的话,那么咱们在利用$符号时就生出了争执。上边以引入五个库文件jquery.js和prototype.js为例来拓展验证。

1. jQuery提供了$.noConflict()实用函数用来舍弃对$标志符的侵吞,以便别的库使用它。

 

先是种景况:jquery.js在prototype.js之后实行引进,如: <script src="prototype.js" type="text/javascript"/>
<script src="jquery.js" type="text/javascript"/>

该函数的语法如下:
$.noConflict(jqueryToo)

   1. jQuery提供了$.noConflict()实用函数用来遗弃对$标志符的挤占,以便其余库使用它。

在这种地方下,大家在协和的js代码中如下写的话:

将标记符$的调节权归还给别的库,允许在页面上错落使用jQuery与另外库。一旦实行了该函数,必须选择jQuery标志符并非$标志符来调用jQuery的职能,

   该函数的语法如下:

$('#msg').hide();

您也能够丢弃jQuery标记符(可选)

 

$永久代表的是jquery中定义的$符号,也能够写成JQuery('#msg').hide();假如想要使用prototype.js中定义的$,大家在后边再介绍。

相应在蕴藏了jQuery之后,但未有包罗冲突库以前调用那几个主意。

    $.noConflict(jqueryToo)

第三种境况:jquery.js在prototype.js以前开始展览引进,如: <script src="jquery.js" type="text/javascript"/>
<script src="prototype.js" type="text/javascript"/>

就算选择的是jQuery标记符,但因为$是jQuery的别称,所以在运用$.noConflict()之后有所jQuery的意义如故可用。大家得以定义更加短的,但未有争执的jQuery小名,举个例子

     将标志符$的调节权归还给其余库,允许在页面上错落使用jQuery与别的库。一旦实施了该函数,必须利用jQuery标志符并不是$标记符来调用jQuery的功能,

在这种情状下,大家在团结的js代码中如下写的话:

var  $j = jQuery ;

     你也得以屏弃jQuery标记符(可选)

$('#msg').hide();

2. 另一个广大的习贯用法是创办二个作用域情况,在该遭受中$标记符指向jQuery对象,在扩大jQuery的时候那是个常用技巧,极其是对此插件作者来讲,他们不容许对于页面开荒者是或不是曾经调用$.noConflict()作出任何假诺,当然也无法活动调用此函数防止破坏页面开拓者的意愿,

   应该在含蓄了jQuery之后,但尚无包蕴争持库以前调用那么些点子。

$此时期表的prototype.js中定义的$符号,纵然大家想要调用jquery.js中的工厂选拔函数成效的话,只好用全称写法JQuery('#msg').hide().

以此习于旧贯用法如下:
(function($) { }) (jQuery);
(function($) { })

 

上面先介绍在首先种引进js库文件相继的景色下,如何正确的行使不相同的js库中定义的$符号。

那有个别宣称了一个函数并用圆括号括起来,因而生成一个表明式,那么些表明式的结果是对一个佚名函数的引用,这一个函数期望传入单个参数并将其命名称为$,在函数主体中,能够经过$标记符来引用任何传递给那个函数的事物。因为参数申明优先于大局作用域中任何像样的命名标记符,所以任何在函数外定义的$值在函数内都会被传到的参数所代表。

    即使选择的是jQuery标志符,但因为$是jQuery的别称,所以在选择$.noConflict()之后全数jQuery的效益照旧可用。大家得以定义更加短的,但平昔不争执的jQuery小名,举个例子

一.使用JQuery.noConflict() 该格局的功用正是让Jquery废弃对$的全体权,将$的调整权交还给prototype.js,因为jquery.js是后引进的,所以最后具有$调节权的是jquery。它的再次回到值是JQuery。当在代码中调用了该 方法之后,大家就不得以选择$来调用jquery的艺术了,此时$就表示在prototype.js库中定义的$了。如下:

(jQuery)

 

JQuery.noConflict();

在无名函数上进行函数调用,将jQuery对象作为参数字传送递

     var  $j = jQuery ;

//此处不得以再写成$('#msg').hide(),此时的$代表prototype.js中定义的$符号。
JQuey('#msg').hide();

在函数外界不管$标志符是或不是曾经在Prototype或别的库中定义,在函数体内它连接指向jQuery对象。

 

自此以往$就象征prototype.js中定义的$,jquery.js中的$不可能再选择,只好利用jquery.js中$的齐全JQuery了。

本文由ca88发布,转载请注明来源

关键词: ca88网址 yzc888手机版