我正在尝试在我的个人网站上构建一个页面,该页面既使用了 jQuery
又实现了 Facebook Connect
。
不幸的是,Facebook 客户端 API
使用 $ token
,这意味着我必须调用 jQuery.noConflict()
双重不幸的是,出于某种疯狂的原因我发现了这一点并且as Rick Strahl points out, jQuery UI doesn't respect noConlict(). At all.事实上,如果您查看源代码,就会发现其中到处都是 $
。
我真的希望能够使用 jQuery UI - 具体来说,dialog()
组件和 draggable
会非常好好吧 - 但我什至不想手动编辑 - 测试和维护 - 我自己的 jQuery UI 任何部分的副本。
这是 yaks I've had to shave 系列中的最新一期这让我束手无策。有什么建议么?帮助!
最佳答案
您引用的帖子非常陈旧且已过时。 jQuery UI
的 1.0
版本在几个文件中存在此问题,并在报告后立即修复。
所有 jQuery UI 都包含在一个 闭包
中,该闭包将 jQuery 作为 $
传递,因此可以在内部使用 $ 而 $ 在外部用于其他用途。
来自 http://docs.jquery.com/Using_jQuery_with_Other_Libraries#Referencing_Magic_-_Shortcuts_for_jQuery
Use the following technique, which allows you to use $ inside of a block of code without permanently overwriting $:
(function($) { /* some code that uses $ */ })(jQuery)
注意:如果您使用此技术,您仍然可以通过 window.$
使用 Prototype,例如 window.$('some_element_id')
。闭包之外的任何引用 $
的函数都将调用 Prototype,即使是从闭包内部调用也是如此。
这就是为什么您会在 jQuery UI 文件中看到 $
的原因,但请放心,任何最新版本的 jQuery UI (1.5+)
都完全支持 jQuery.noConflict()
关于jquery - Facebook Connect、jQuery UI 和 jQuery.noConflict(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/392334/