2013-03-28 51 views
0

我見過幾種使用jQuery.noConflict的方法。但似乎並不總是必要的。我什麼時候需要jQuery中的關鍵字noConflict?

// define $ 
var $ = function() { 
    alert("Hello World"); 
}; 

// use $ where it's not jQuery 
$(); 

// 1 
// jQuery.noConflict(); 
jQuery(document).ready(function($) { 
    $('body').append("<p>foo</p>"); 
}); 

// 2 
// jQuery.noConflict(); 
(function($) { 
    $(function() { 
     $('body').append("<p>foo</p>"); 
    }); 
})(jQuery); 

// 3 
// $.noConflict() here to tell jQuery to ignore $, but we're using *jQuery* when ready 
jQuery(document).ready(function() { 
    jQuery('body').append("<p>foo</p>"); 
}); 

// use $ where it's not jQuery 
$(); 

jQuery.noConflict唯一需要的是當我們定義的jQuery

var j = jQuery.noConflict(); 
j(document).ready(function() { 
    j('body').append("<p>foo</p>"); 
}); 

的那麼在什麼情況下一個別名(除了創造一個別名)的jQuery.noConflict()不能ommitted?

回答

1

當你擁有jQuery的單一版本,並沒有使用框架,可以互相沖突,你可以省略jQuery.noConflict()

其他一些流行的JavaScript框架是:MooTools的,骨幹, 薩米,卡布奇諾,淘汰賽,JavaScript MVC,谷歌Web工具包,谷歌關​​閉,Ember,蝙蝠俠,和Ext JS 。

其他一些框架也使用$字符作爲快捷方式 (就像jQuery的),然後你突然有使用相同的快捷方式,這可能導致你的 腳本停止運行兩個不同的 框架。

jQuery團隊已經考慮過這個問題,並實現了 noConflict()方法。 Reference

在JQuery文檔中。

許多JavaScript庫使用$作爲函數或變量名稱,只是像jQuery那樣使用 。在jQuery的情況下,$是jQuery的別名,所以 所有功能都可以在不使用$的情況下使用。如果您需要使用 另一個JavaScript庫以及jQuery,請將$ back 的控制權返回給另一個庫,並調用$ .noConflict()。舊的引用 $在jQuery初始化期間被保存; noConflict()只是簡單地將它們恢復爲 。 Reference

1

許多JavaScript庫使用$作爲函數或變量名稱,就像jQuery一樣。在jQuery的情況下,$是jQuery的別名,所以所有功能都可以在不使用$的情況下使用。

如果您需要在jQuery旁邊使用另一個JavaScript庫,請使用$ .noConflict()調用將$ back控件返回到其他庫。 $的舊引用在jQuery初始化期間保存; noConflict()只是簡單地恢復它們。

相關問題