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 UI1.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()