天天看点

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

有一次拷贝,真的,我老佩服我自己了,随便

在使用jQuery开发的时候,可能还会使用到其他的JS库,比如Prototype,但多库共存时可能会发生冲突;若是发生冲突后,可以通过以下几种方案进行解决:

     一、 jQuery库在其他库之前导入,直接使用jQuery(callback)方法如:

Html代码

  1. <html>  
  2. <head>  
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  4. <!--先导入jQuery -->  
  5. <script src="../../scripts/jquery-1.3.1.js" type="text/javascript"></script>  
  6. <!--后导入其他库 -->  
  7. <script src="prototype-1.6.0.3.js" type="text/javascript"></script>  
  8. </head>  
  9. <body>  
  10. <p id="pp">test---prototype</p>  
  11. <p >test---jQuery</p>  
  12. <script type="text/javascript">  
  13. jQuery(function(){   //直接使用 jQuery ,没有必要调用"jQuery.noConflict()"函数。   
  14.     jQuery("p").click(function(){         
  15.         alert( jQuery(this).text() );   
  16.     });   
  17. });   
  18. $("pp").style.display = 'none'; //使用prototype   
  19. </script>  
  20. </body>  
  21. </html>  
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--先导入jQuery -->
<script src="../../scripts/jquery-1.3.1.js" type="text/javascript"></script>
<!--后导入其他库 -->
<script src="prototype-1.6.0.3.js" type="text/javascript"></script>
</head>
<body>
<p id="pp">test---prototype</p>
<p >test---jQuery</p>

<script type="text/javascript">
jQuery(function(){   //直接使用 jQuery ,没有必要调用"jQuery.noConflict()"函数。
	jQuery("p").click(function(){      
		alert( jQuery(this).text() );
	});
});

$("pp").style.display = 'none'; //使用prototype
</script>
</body>
</html>
           

 二、 jQuery库在其他库之后导入,使用jQuery.noConflict()方法将变量$的控制权让渡给其他库,有以下几种方式:

Js代码

jQuery与其他库冲突的解决方法
  1. <script type="text/javascript">   
  2. jQuery.noConflict();                //将变量$的控制权让渡给prototype.js   
  3. jQuery(function(){                  //使用jQuery   
  4.     jQuery("p").click(function(){   
  5.         alert( jQuery(this).text() );   
  6.     });   
  7. });   
  8. $("pp").style.display = 'none';     //使用prototype   
  9. </script>   
  10. //代码二   
  11. <script type="text/javascript">   
  12. var $j = jQuery.noConflict();       //自定义一个比较短快捷方式   
  13. $j(function(){                      //使用jQuery   
  14.     $j("p").click(function(){   
  15.         alert( $j(this).text() );   
  16.     });   
  17. });   
  18. $("pp").style.display = 'none';     //使用prototype   
  19. </script>   
  20. //代码三   
  21. <script type="text/javascript">   
  22. jQuery.noConflict();                //将变量$的控制权让渡给prototype.js   
  23. jQuery(function($){                 //使用jQuery   
  24.     $("p").click(function(){        //继续使用 $ 方法   
  25.         alert( $(this).text() );   
  26.     });   
  27. });   
  28. $("pp").style.display = 'none';     //使用prototype   
  29. </script>   
  30. //代码四   
  31. <script type="text/javascript">   
  32. jQuery.noConflict();                //将变量$的控制权让渡给prototype.js   
  33. (function($){                   //定义匿名函数并设置形参为$   
  34.     $(function(){               //匿名函数内部的$均为jQuery   
  35.         $("p").click(function(){    //继续使用 $ 方法   
  36.             alert($(this).text());   
  37.         });   
  38.     });   
  39. })(jQuery);                 //执行匿名函数且传递实参jQuery   
  40. $("pp").style.display = 'none';     //使用prototype   
  41. </script>   
<script type="text/javascript">
jQuery.noConflict();				//将变量$的控制权让渡给prototype.js
jQuery(function(){					//使用jQuery
	jQuery("p").click(function(){
		alert( jQuery(this).text() );
	});
});

$("pp").style.display = 'none';		//使用prototype
</script>

//代码二
<script type="text/javascript">
var $j = jQuery.noConflict();		//自定义一个比较短快捷方式
$j(function(){						//使用jQuery
	$j("p").click(function(){
		alert( $j(this).text() );
	});
});

$("pp").style.display = 'none';		//使用prototype
</script>

//代码三
<script type="text/javascript">
jQuery.noConflict();				//将变量$的控制权让渡给prototype.js
jQuery(function($){					//使用jQuery
	$("p").click(function(){		//继续使用 $ 方法
		alert( $(this).text() );
	});
});

$("pp").style.display = 'none';		//使用prototype
</script>

//代码四
<script type="text/javascript">
jQuery.noConflict();				//将变量$的控制权让渡给prototype.js
(function($){					//定义匿名函数并设置形参为$
	$(function(){				//匿名函数内部的$均为jQuery
		$("p").click(function(){	//继续使用 $ 方法
			alert($(this).text());
		});
	});
})(jQuery);					//执行匿名函数且传递实参jQuery

$("pp").style.display = 'none';		//使用prototype
</script>

       

    通过以上几方法就可以很好的去解决多库共存会发生冲突的问题了.

继续阅读