虚拟主机域名注册-常见问题网页制作 → Javascript


[原创]解决jQuery和其他库的冲突
作者:

原创文章,转载请注明: 转载自jocean官方博客

本文链接地址: 解决jQuery和其他库的冲突

在jQuery库中,几乎所有的插件都被限制在它的命名空间里。通常,全局(global)对 象都被很好地存储在jQueiy命名空间里,因此当把jQuery和其他JavaScript库(例如Prototype、 MooTools或YUI) —起使用时,不会引起冲突。

注意默认情况下,jQuery用$作为自身的快捷方式。

  1. jQuery库在其他库之后导入

在其他库和jQuery库都被加载完毕后,可以在任何时候调用jQuery.noConflict()函数 来将变量$的控制权移交给其他JavaScript库。示例如下:

<html>

<headx/head>                                          .

<body>

<p id=npp”>test——- prototype<p>

<p >test—– jQuery<p>

<!引入 prototype –>

<script src=”prototype-1 • 6• 0• 3• js” type=,ltext/javascriptH></script>

<!弓丨入 jQuery –>

<script src=n • • / • • /scripts/jquery-1.3 .1 • j s” type=,ftext/javascript,f> </script>

 

>>>>> »>

<script language=Mjavascript,f>
j Query .noConflict () ; //将变量$的控制权移交给 prototype • js
j Query (function () {//使用 jQuery
jQuery(np”).click(function(){
 alert ( jQuery(this).text());
}) 
}) 
$(,_)• style.display = ,none1; //使用 prototype
</script> 
</body> 
</html> 

 

然后,就可以在程序里将jQuery ()函数作为jQuery对象的制造工厂。 此外,还有另一种选择。如果想确保jQuery不会与其他库冲突,但又想自定义一个快捷方式,可以进行如下操作:

//…省略其他代码 
var $j = jQuery.noConflict();//自定义一个快捷方式
$j (function(){//使用jQuery,利用自定义快捷方式—- $j
$j(“p”).click(function(){ 
alert($j(this).text());
}) 
}) 
$(“ppM).style.display = ‘none1;//使序 prototype
//…省略其他代码 

 

可以自定义备用名称,例如jq、$J> awesomequery等。 如果不想给jQuery自定义这些备用名称,还想使用$而不管其他库的$()方法,同时又不 想与其他库相冲突,那么可以使用以下两种解决方法。 其一:

//…省略其他代码

jQuery.noConflict(); jQuery(function($) { //将变量$的控制权让渡给prototype, js //使用jQuery设定页面加载时执行的函数

云主机虚拟主机便宜空间

$(“p”)•click(function (){//在函数内部继续使用$ ()方法
alert ($(this) .text ()); 
}) 
}) 
$ (“pp”)•style.display = ‘none’;//使用 prototype
//…省略其他代码 

 

其二:

/八..省略其他代码 
jQuery.noConflict();//将变量$的控制权让渡给prototype, js
(function ($){//定义匿名函数并设置形参为$
$(function (){//匿名函数内部的$均为jQuery
$(“pn).click(function (){//继续使用$()方法
alert ($(this) .text ());
}); 
}); 
}) (jQuery);//执行匿名函数且传递实参jQuery .
SC’pp’1) . style .display – 1 none1;//使用 prototype •
//…省略其他代码 

 

这应该是最理想的方式,因为可以通过改变最少的代码来实现全面的兼容性。

  1. jQuery库在其他库之前导入

如果jQuery库在其他库之前就导入了,那么可以直接使用“jQuery”来做一些jQuery的 工作。同时,可以使用$()方法作为其他库的快捷方式。这里无需调用jQuerymoConflictO函 数。示例如下:

<html>

<headx/head>

<body>

<p id=”pp”>test—— prototype<p>

<p >test—– jQuery<p>

<!–先导入 jQuery –>

 

^ jQueiY>>>>> >»—————————————— :—- ^————————

〈script src==fl • • / • . /scripts/jquery-1 • 3 • 1 • js” type=’ftext/javascript”> </script>

<!—后导入其他库

<script src=”prototype-l•6•0•3.jsn type=”text/javascript”></script> <script language=,Tjavascript11 >

jQuery (function () { //直接使用 jQuery,无需调用”jQuery.noConflict ()”函数 jQuery(“p”).click(function(){

alert( jQuery(this).text());

})

})

$ (nppn) . style.display = 1 nonef; //使用 prototype </script>

</body>

</html>

有了这些方法来解决冲突,就可以在项目中放心地引用jQueiy 了。

原创文章,转载请注明: 转载自jocean官方博客

本文链接地址: 解决jQuery和其他库的冲突




来源:
阅读:3358
日期:2014-06-05

【 双击滚屏 】 【 推荐朋友 】 【 收藏 】 【 打印 】 【 关闭 】 【 字体: 】 
上一篇:[原创]什么是ODBC?
下一篇:[原创]Jetty的基本配置
  >> 相关文章