jQuery / опытный конфликт

Я использую сценарий jQuery hoverIntent.js для мега системы выпадающего меню, вдохновленной мега выпадающим w/CSS Сына Tonaka и jQuery sohtanaka.com/web-design/mega-drop-downs-w-css-jquery. Моя страница включает prototype.js сценарий, который вставляется сторонним поставщиком (это - веб-сайт недвижимости, который загружает поиск недвижимости и ведущее содержание управления). Это загружается в последний раз незадолго до тега. Мои вызовы сценария и jQuery меню загружаются во главе тега. Ниже я включал 2 ссылки. Первая ссылка я прокомментировал вызов к prototype.js и меню, хорошо работает. Вторая ссылка имеет вызов к prototype.js, и выпадающее не работает.

  1. Выпадающая работа: http://www.myreoforeclosures.com/_menutestfromcode.html (prototype.js прокомментированный)

  2. Не выпадающая работа: http://www.myreoforeclosures.com/_menutestfromcode2.html (с prototype.js, работающим)

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

Обратите внимание, что я поднимаюсь на крутую кривую обучения с сетью 2.0/CSS/jQuery, поскольку это - моя первая попытка, разрабатывая веб-сайт с помощью этих инструментов (по сравнению с основанными на таблице веб-сайтами ранее).

Любая справка, чтобы заставить jQuery и прототип сотрудничать значительно ценилась бы. Я только имею контроль над сценарием jQuery, таким образом, любое разрешение должно быть сделано к jQuery. Я не имею никакого контроля над prototype.js.

10
задан Rob W 27 December 2011 в 21:46
поделиться

5 ответов

Я вижу, что вы используете старую версию jQuery. У вас 1.3.2 вместо 1.4.2.

Не уверен, что это изменит ситуацию, но, возможно, попробуйте последнюю версию.

Вы можете создать ссылку прямо из CDN Google:

http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js

1
ответ дан 4 December 2019 в 03:38
поделиться
0
ответ дан 4 December 2019 в 03:38
поделиться

Если в этом меню не используется прототип, вы можете переопределить переменную $ на jQuery в новом блоке (через самоисполняющуюся анонимную функцию).

(function ($) {
   // do stuff as usual
})(jQuery);
0
ответ дан 4 December 2019 в 03:38
поделиться

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

Если у вас есть код, который ожидает, что $ означает "jQuery", то его нужно изменить, чтобы он использовал jQuery вместо этого. В противном случае он подхватит прототип $, что, конечно, совсем другое дело.

edit - хорошо, я наконец-то заставил вашу страницу загрузиться (я думаю, что у моей сети были проблемы), и я вижу, что вы используете "$j" довольно последовательно. Поэтому я не думаю, что проблема $ в коде меню является проблемой, но я оставлю комментарий здесь, потому что по-прежнему верно, что noConflict() не является магией.

edit again - я бы согласился с предложением Патрика попробовать Prototype 1.4.2.

3
ответ дан 4 December 2019 в 03:38
поделиться

Мне кажется, что меню работает для обоих URL. (Firefox 3.6.4)

Редактировать: Мне кажется, они работают, потому что я предпочитаю Firefox с NoScript. Я не заметил, что библиотека прототипов пришла из другого домена. = /

/ headdesk

0
ответ дан 4 December 2019 в 03:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: