2011-11-23 27 views
8

文檔說你可以用$ .noConflict()這樣的:jQuery的noConflict:只是快速的想法

jQuery.noConflict(); 
(function($) { 
    $(function() { 
    // more code using $ as alias to jQuery 
    }); 
})(jQuery); 
// other code using $ as an alias to the other library 

報告還指出,在調用它返回的jQuery對象的一個​​實例,因此我可以這樣做:

jQuery.noConflict()(function(){ 
    // code using jQuery 
}); 
// other code using $ as an alias to the other library 

但是,這種組合是否有效?

(function($) { 
    $(function() { 
    // more code using $ as alias to jQuery 
    }); 
})(jQuery.noConflict()); 
// other code using $ as an alias to the other library 

如果是這樣,是否有理由不這樣做?還有(如果有效的話),爲什麼不總是使用這個方法來保證在我們的閉包內部$ == jQuery?

+2

我看到的唯一缺點是,如果你有多個這樣的塊,你會不必要地調用'jQuery.noConflict()'多次。無可否認,這不是一個非常重要的缺點。 – Wiseguy

+0

@Wiseguy是的,我認爲你只是在第一次關閉時才這樣做,否則這有點浪費。 – JesseBuesking

+0

然後你必須跟蹤哪個塊是第一個加載的。如果你以後添加一個塊/包含一個.js文件在以前的第一個之上?我同樣也有''在最上面,並在整個過程中使用'(function($){})(jQuery)'。基本上歸結爲個人喜好,我猜。 – Wiseguy

回答

5

最後一種方法也適用 - jQuery.noConflict()返回jQuery對象,它作爲$參數傳遞給該函數。

我沒有看到一個理由不這樣做,寧願它的其他方法。

5

我不明白爲什麼不能自jQuery.noConflictreturnsjQuery對象,它在函數被調用之前被評估。