Facebook Connect, пользовательский интерфейс jQuery и jQuery.noConflict () - PullRequest
6 голосов
/ 25 декабря 2008

Я пытаюсь создать страницу на моем личном веб-сайте, которая использует jQuery и реализует Facebook Connect.

К сожалению, Facebook client API использует $ token, что означает, что я должен позвонить jQuery.noConflict()

Вдвойне, к сожалению, я обнаружил, что по какой-то безумной причине и , как указывает Рик Страл, пользовательский интерфейс jQuery не уважает noConlict (). На всех. На самом деле, если вы посмотрите на исходный код, на нем будет $.

Я действительно хочу иметь возможность использовать пользовательский интерфейс jQuery - в частности, компонент dialog(), и draggable тоже был бы очень хорош - но я даже более того, я не хочу Я должен отредактировать вручную - и протестировать, и поддерживать - свою собственную копию любой части jQuery UI.

Это самая последняя из серии яков, которую мне пришлось побрить , что заставило меня прийти в себя. Какие-либо предложения? Помогите! * * 1023

1 Ответ

18 голосов
/ 25 декабря 2008

Пост, на который вы ссылались, довольно старый и устарел. Релиз 1.0 jQuery UI имел эту проблему в нескольких файлах и был исправлен, как только было сообщено.

Весь пользовательский интерфейс jQuery заключен в closure, который передается в jQuery как $ и поэтому может использовать $ внутри, а $ используется для чего-то другого снаружи.

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

Используйте следующую технику, которая позволяет использовать $ внутри блока кода без постоянного перезапись $:

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

Примечание: если вы используете эту технику, вы все равно можете использовать Prototype через window.$ например, window.$('some_element_id'). Любая функция вне вашего замыкания, которая ссылается на $, будет вызывать Prototype, даже если она вызывается изнутри вашего замыкания.

Именно поэтому вы увидите $ в файлах пользовательского интерфейса jQuery, но будьте уверены, любая последняя версия jQuery UI (1.5+) полностью поддерживается с jQuery.noConflict()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...