2008-12-24 74 views
6

我想在我的個人網站上建立一個頁面,使用jQuery和執行Facebook ConnectFacebook的連接,jQuery的UI和jQuery.noConflict()

不幸的是,Facebook client API使用$ token,這意味着我必須調用jQuery.noConflict()

雙不幸的是,我發現了,對於一些瘋狂的原因和as Rick Strahl points out, jQuery UI doesn't respect noConlict(). At all.事實上,如果你看看源代碼,全部有$

我真的希望能夠使用jQuery UI - 特別是dialog()成分,draggable將是非常好的,以及 - 但我甚至moreso,我不希望有手動編輯 - 和測試和維護 - 我自己的jQuery UI任何部分的副本。

這是最近在一系列yaks I've had to shave哪些讓我在我的智慧結束。有什麼建議麼?幫幫我!

+0

您正在使用哪種版本的Facebook連接API與支持?我只是下載它,它看起來像使用FB,而不是整個。也許我錯過了一些東西,雖然... – tvanfosson 2008-12-25 02:59:24

+0

不確定你的意思......我只是遵循他們的文檔實施。在我開始使用noConflict()之前,我得到了奇怪的方法/對象不存在來自Facebook的東西的錯誤。不記得實際的錯誤是什麼。 – 2008-12-25 05:06:06

回答

18

您引用的帖子已過時並且已過時。 jQuery UI1.0版本在一些文件中存在此問題,並在報告後立即修復。

所有的jQuery UI被包裝在一個closure中,它以jQuery的形式傳遞,如$,因此可以使用$ internal,而$用於其他外部。

http://docs.jquery.com/Using_jQuery_with_Other_Libraries#Referencing_Magic_-_Shortcuts_for_jQuery

使用以下技術,它允許您使用$塊的代碼 內不會永久 覆蓋$:

(function($) { 
    /* some code that uses $ */ 
})(jQuery) 

注:如果您使用這項技術,您仍然可以通過window.$例如window.$('some_element_id')使用Prototype。即使從閉包中調用,任何引用$的閉包之外的函數都會調用Prototype。

這就是爲什麼你會看到$的jQuery UI的內部文件,但請放心,任何最近的jQuery UI (1.5+)版本完全jQuery.noConflict()