6

我正在尝试在我的个人网站上建立一个使用jQuery和实现的页面Facebook Connect

不幸的是,Facebook client API使用 the $ token,这意味着我必须打电话jQuery.noConflict()

不幸的是,我发现出于某种疯狂的原因,正如 Rick Strahl 指出的那样,jQuery UI 不尊重 noConlict()。完全没有。其实看源码的话,$全是s。

真的很想能够使用 jQuery UI - 特别是dialog()组件,而且draggable也非常好 - 但我更不想手动编辑 - 测试和维护 - 我自己的副本jQuery UI 的任何部分。

这是我不得不刮胡子的一系列牦牛中最近的一次,这让我束手无策。有什么建议么?帮助!

4

1 回答 1

18

您引用的帖子已经过时且过时了。该1.0版本jQuery UI在几个文件中包含此问题,并在报告后立即修复。

所有的 jQuery UI 都被包裹在一个closure传入 jQuery 的 as 中$,因此可以在内部使用 $ 而 $ 在外部用于其他东西。

来自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,即使从闭包内部调用也是如此。

这就是为什么您会$在 jQuery UI 文件中看到的原因,但请放心,任何最新版本jQuery UI (1.5+)都完全支持jQuery.noConflict()

于 2008-12-25T04:28:10.840 回答