Facebook Connect,jQuery UI和jQuery.noConflict()
我正在尝试在我的个人网站上构建一个页面,该页面都使用了jQuery
并实现了Facebook Connect
。
不幸的是, Facebook client API
使用$ token
,这意味着我必须调用jQuery.noConflict()
不幸的是,我发现由于一些疯狂的原因, 正如Rick Strahl指出的那样,jQuery UI不尊重noConlict()。 完全没有。 事实上,如果你看一下源代码,就会有$
s。
我真的希望能够使用jQuery UI – 特别是dialog()
组件, draggable
也非常好 – 但我甚至更多,我不想手工编辑 – 测试和维护 – 我自己的jQuery UI任何部分的副本。
这是我不得不刮胡子的一系列牦牛中最近的一次,这让我的智慧结束了。 有什么建议? 救命!
你引用的post已经很老了,已经过时了。 jQuery UI
的1.0
版本在几个文件中出现了这个问题,并在报告后立即修复。
所有的jQuery UI都包含在一个closure
,它以jQuery的forms传递给$
,因此可以在内部使用$,而$则用于外部的其他东西。
来自http://docs.jquery.com/Using_jQuery_with_Other_Libraries#Referencing_Magic_-_Shortcuts_for_jQuery
使用以下技术,它允许您在代码块内使用$而无需永久覆盖$:
(function($) { /* some code that uses $ */ })(jQuery)
注意:如果你使用这种技术,你仍然可以通过window.$
使用Prototype window.$
eg, window.$('some_element_id')
。 引用$
的闭包之外的任何函数都将调用Prototype,即使从闭包内部调用也是如此。
这就是为什么你会在jQuery UI文件中看到$
,但请放心, jQuery UI (1.5+)
任何最新版本都完全支持jQuery.noConflict()