最近項目中,使用jQuery發現其中的函數變量$與其它JS框架衝突。google後發現一個解決辦法:
var jQuery=jQuery.noConflict();
在使用 jQuery.noConflict();後,就只能使用jQuery變量訪問jQuery對象。例如,在要用到$("div p")的地方,就必須換成jQuery("div p") .
在jQuery1.3.2中,解決函數變量“$”衝突問題,對JS類庫的引入順序沒有特殊要求。只要jQuery.noConflict(true);在jQuery的引入後執行即可。
jQuery.noConflict()函數的源碼爲:
noConflict: function( deep ) {
window.$ = _$;
if ( deep )
window.jQuery = _jQuery;
return jQuery;
}
創建一個新的別名用以在接下來的庫中使用jQuery對象。
jQuery 代碼:
var j = jQuery.noConflict();
// 基於 jQuery 的代碼
j("div p").hide();
// 基於其他庫的 $() 代碼
$("content").style.display = 'none';
jQuery.noConflict(true)則不僅可以防止$衝突,還可以防止jQuery這個關鍵詞衝突。
jQuery 代碼:
var j = jQuery.noConflict(true);
// 基於 jQuery 的代碼
j("div p").hide();
// 基於其他庫的 $() 代碼
$("content").style.display = 'none';
// 基於其他庫(或版本)的
jQuery() 代碼
jQuery("#abc").html("這種情況很少見!");