在使用jQuery開發的時候,可能還會使用到其他的JS庫,比如Prototype,但多庫共存時可能會發生衝突;若是發生衝突後,可以通過jQuery.noConflict() 方法進行解決
定義和用法
noConflict() 方法讓渡變數 $ 的 jQuery 控制權。
該方法釋放 jQuery 對 $ 變數的控制。
該方法也可用於為 jQuery 變數規定新的自定義名稱。
提示:在其他 JavaScript 庫為其函式使用 $ 時,該方法很有用。
語法
jQuery.noConflict(removeAll)
引數 | 描述 |
---|---|
removeAll | 布林值。指示是否允許徹底將 jQuery 變數還原。 |
說明
許多 JavaScript 庫使用 $ 作為函式或變數名,jQuery 也一樣。在 jQuery 中,$ 僅僅是 jQuery 的別名,因此即使不使用 $ 也能保證所有功能性。假如我們需要使用 jQuery 之外的另一 JavaScript 庫,我們可以通過呼叫 $.noConflict() 向該庫返回控制權:
一、 jQuery庫在其他庫之前匯入,直接使用jQuery(callback)方法:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!--先匯入jQuery --> <script src="http://www.cnblogs.com/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()方法將變數$的控制權讓渡給其他庫,有以下幾種方式:
<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 /*********************************************************************/ jQuery(document).ready(function(){ // 一載入頁面的時候就將權利讓出去 jQuery.noConflict(); }); </script>