2015-06-22 33 views
1

我們已經開發了一個頁面,其中包含了作爲單獨組件實現的大量功能。 jQuery本身僅包含在頁眉中一次。 但每個組件都有確切的同一段JavaScript代碼:在同一頁面上多次調用jQuery.noConflict()

j$ = jQuery.noConflict(); 

可以將這些多次調用jQuery的noconflict同一頁面,將結果分配到相同的變量上創建了一些問題(例如使用插件)?可以接受嗎?我期望它作爲一個單例工作,即總是返回對同一個內部對象的引用,而不管它是什麼。 在此先感謝您的幫助,夥計們!

+0

聽起來像是你應該使用腳本一個更好的模式。看看如何編寫jQuery插件。 – epascarello

回答

1

jQuery.noConflict()

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

就你而言,多次調用應該沒有危害,因爲它是一個冪等函數。

如果您打算將這些組件包含在未知環境中,在繼續之前調用它是一種安全的做法。


您可以考慮使用self-executing anonymous function將其綁定到你的背景:

(function($){ 
    // here $ will be the global, common jQuery object you passed as an argument 
})(jQuery); 
+0

好的,太好了。如何重寫每個組件中相同的全局變量,即j $。這可能是任何問題,例如一些插件用於不同的組件? – monitor

+0

例如,我會在[Browserify](http://browserify.org/)中支持我的模塊,因此每個模塊都有適當的獨立依賴集。或者看看我的編輯。 – moonwave99

相關問題