jQuery pangunahing - method na noConflict()
實例
Gamitin ang method na noConflict() upang magpalagay ng bagong pangalang custom sa variable ng jQuery:
var jq=$.noConflict();
Paglilinaw at paggamit
Ang method na noConflict() ay nagpasa ng kontrol ng variable $ sa jQuery.
Ang paraan na ito ay naglibera ng kontrol ng jQuery sa variable ng $.
Ang paraan na ito ay maaari ring gamitin upang magpalagay ng bagong pangalang custom sa variable ng jQuery.
Mga payo:Kahit na gumagamit ng $ ang ibang JavaScript library sa kanilang mga function, ang paraan na ito ay napaka-mahusay.
Mga pangunahing panauhing balita
jQuery.noConflict(removeAll)
Parameter | Paglalarawan |
---|---|
removeAll | Boolean. Nagtutukoy kung magiging talaga na ibabalik ang variable ng jQuery. |
Paliwanag
Maraming JavaScript library ang gumagamit ng $ bilang pangalan ng function o variable, kabilang din ang jQuery. Sa jQuery, $ ay lamang ang pangalan na kinalalagyan ng jQuery, kaya hindi kailangan ng $ upang matiyak ang lahat ng功能性. Kung kailangan namin gamitin ang ibang JavaScript library kung hindi jQuery, maaari naming ibalik ang kontrol sa pamamagitan ng pagtawag sa $.noConflict():
<script type="text/javascript" src="other_lib.js"></script> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $.noConflict(); // Kode sa paggamit ng $ ng ibang library </script>
Maaaring magkasama sa .ready() method upang magpakilala ng pangalang pangalawang jQuery object, ang teknolohiya na ito ay napaka-mahusay:
<script type="text/javascript" src="other_lib.js"></script> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $.noConflict(); jQuery(document).ready(function($) { // Kode sa paggamit ng $ ng jQuery }); // Kode sa paggamit ng $ ng ibang library </script>
Bilang karagdagan, kapag pinapasa ang tunay na parametro sa paraan na ito, maaari naming ibalik ang kontrol ng $ at jQuery sa orihinal na library. Isipin muna bago gamitin!
這是相對於簡單的 noConflict 方法更極端的版本,因為這將完全重新定義 jQuery。這通常用於一種極端的情況,比如你想要將 jQuery 嵌入一個高度衝突的環境。注意:調用此方法後極有可能導致插件失效。
實例
例子 1
將 $ 引用的對象映射回原始的對象:
jQuery.noConflict(); jQuery("div p").hide(); // 使用 jQuery $("content").style.display = "none"; // 使用其他庫的 $()
例子 2
恢復使用別名 $,然後創建並執行一個函數,在這個函數的作用域中仍然將 $ 作為 jQuery 的別名來使用。在這個函數中,原來的 $ 對象是無效的。這個函數對於大多數不依賴其他庫的插件都十分有效:
jQuery.noConflict(); (function($) { $(function() { // 使用 $ 作為 jQuery 别名的代碼 }); })(jQuery); ... // 其他用 $ 作為別名的庫的代碼
例子 3
可以將 jQuery.noConflict() 與簡寫的 ready 結合,使代碼更緊湊:
jQuery.noConflict()(function(){ // 使用 jQuery 的代碼 }); ... // 其他庫使用 $ 做別名的代碼
例子 4
創建一個新的別名用於在接下來的庫中使用 jQuery 對象:
var j = jQuery.noConflict(); j("div p").hide(); // 基於 jQuery 的代碼 $("content").style.display = "none"; // 基於其他庫的 $() 代碼
例子 5
完全將 jQuery 移動到一個新的命名空間:
var dom = {}; dom.query = jQuery.noConflict(true);
結果:
dom.query("div p").hide(); // 新 jQuery 的代碼 $("content").style.display = "none"; // 另一庫 $() 的代碼 jQuery("div > p").hide(); // 另一版本 jQuery 的代碼