jQuery.noConflict()
jQuery.noConflict( [ removeAll ] ) 返回: Object
描述: 放棄jQuery控制的$的變量。
-
version added: 1.0jQuery.noConflict( [ removeAll ] )
removeAll判斷是否從全局范圍內(nèi)去除所有jQuery變量的布爾值(包括jQuery本身)。
很多javascript庫使用 $ 作為一個函數(shù)或者變量名,正如jquery做的一樣。在jQuery下 $只是jQuery的一個別名,所以不使用 $所有功能都是有效的。如果我們需要同時使用jQuery和其他javascript庫,我們可以使用 $.noConflict()來控制其他庫使用 $ :
<script type="text/javascript" src="other_lib.js"></script> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $.noConflict(); // Code that uses other library's $ can follow here. </script>
這個技巧,在jQuery對象結(jié)合.ready()方法的地方依然有效,我們沒有必要為通過對.ready()內(nèi)部調(diào)用$而擔(dān)心沖突(原因:.ready()是一個閉包):
<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($) {
// 在這里可以使用jQuery的$。
});
// 在這里使用其他庫的$。
</script>
如果必要的話,我們可以空出jQuery名字,傳遞true作為一個參數(shù)給這個方法。 這不是必須的,如果我們必須這樣做的話(舉個例子,如果我們在同一個頁面上使用多個版本的jQuery庫), 我們必須考慮到大多數(shù)插件依靠jQuery存在的變量,這種情況,可能不能正常操作。
舉例
例子: 將$引用的對象映射回原始的對象。
jQuery.noConflict();
// Do something with jQuery
jQuery("div p").hide();
// Do something with another library's $()
$("content").style.display = 'none';
例子: 恢復(fù)使用別名$,然后創(chuàng)建并執(zhí)行一個函數(shù),在這個函數(shù)的作用域中仍然將$作為jQuery的別名來使用。在這個函數(shù)中,原來的$對象是無效的。這個函數(shù)對于大多數(shù)不依賴于其他庫的插件都十分有效。
jQuery.noConflict();
(function($) {
$(function() {
// 使用 $ 作為 jQuery 別名的代碼
});
})(jQuery);
// 其他用 $ 作為別名的庫的代碼
例子: 你可以通過jQuery.noConflict() ready約束為一小段代碼
jQuery.noConflict()(function(){
// 使用jQuery代碼
});
// 其他用 $ 作為別名的庫的代碼
Example: 創(chuàng)建一個新的別名用以在接下來的庫中使用jQuery對象。
var j = jQuery.noConflict();
// Do something with jQuery
j("div p").hide();
// Do something with another library's $()
$("content").style.display = 'none';
例子: 完全將 jQuery 移到一個新的命名空間。
var dom = {};
dom.query = jQuery.noConflict(true);
Result:
// Do something with the new jQuery
dom.query("div p").hide();
// Do something with another library's $()
$("content").style.display = 'none';
// Do something with another version of jQuery
jQuery("div > p").hide();