最近遇到個問題,同時引用了jquery庫和另一個js庫。當用$XX去調用js庫函數時,發現失效了!因而找資料,原來是jquery命名衝突了。由於許多JavaScript 庫使用$做爲函數或變量名,jquery也同樣。其實$只是jquery的一個別名而已,假如咱們須要使用jquery 以外的另外一js庫,咱們能夠經過調用 $.noConflict() 向該庫返回控制權。下面是收集到解決這一問題的五種方案,總有一種你會用得上的。javascript
例一:
html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd "> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>衝突解決1</title> <!-- 引入 prototype --> <script src="prototype-1.6.0.3.js" type="text/javascript"></script> <!-- 引入 jQuery --> <script src="/scripts/jquery-1.3.1.js" type="text/javascript"></script> </head> <body> <p id="pp">test---prototype</p> <p >test---jQuery</p> <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> </body> </html>
例二:
java
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd "> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>衝突解決2</title> <!-- 引入 prototype --> <script src="prototype-1.6.0.3.js" type="text/javascript"></script> <!-- 引入 jQuery --> <script src="/scripts/jquery-1.3.1.js" type="text/javascript"></script> </head> <body> <p id="pp">test---prototype</p> <p >test---jQuery</p> <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> </body> </html>
例三:
jquery
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd "> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>衝突解決3</title> <!-- 引入 prototype --> <script src="prototype-1.6.0.3.js" type="text/javascript"></script> <!-- 引入 jQuery --> <script src="/scripts/jquery-1.3.1.js" type="text/javascript"></script> </head> <body> <p id="pp">test---prototype</p> <p >test---jQuery</p> <script type="text/javascript"> jQuery.noConflict(); //將變量$的控制權讓渡給prototype.js jQuery(function($){ //使用jQuery $("p").click(function(){ //繼續使用 $ 方法 alert( $(this).text() ); }); }); $("pp").style.display = 'none'; //使用prototype </script> </body> </html>
例四:
ide
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd "> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>衝突解決4</title> <!-- 引入 prototype --> <script src="prototype-1.6.0.3.js" type="text/javascript"></script> <!-- 引入 jQuery --> <script src="/scripts/jquery-1.3.1.js" type="text/javascript"></script> </head> <body> <p id="pp">test---prototype</p> <p >test---jQuery</p> <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> </body> </html>
例五:
函數
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd "> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>衝突解決5</title> <!--先導入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>
看,原來解決問題的方法可不止一個兩個呢,有須要的小夥伴們本身來取吧ui