@Tupoleff
Фрилансер, Joomla-сайты

Как правильно использовать jQuery noConflict?

На странице сайта использую jQuery, которая нужна для работы двух сторонних js-библиотек. Назовем их menu.js и slider.js.
В html-коде создаю два DIV-а: для выпадающего меню и слайдера. На каждый DIV вешаю событие.
При наведении курсора мыши на DIV c id="Menu" - вызов функции из menu.js
На DIV c id="Slider" - вызов функции из slider.js

При запуске только menu.js - меню работает штатно. Инструменты браузера показывают что на id="Menu" висит событие mouseover которое вызывает функцию из menu.js.
При запуске menu.js + slider.js - меню перестает работать, работает только слайдер. Браузера показывает что на id="Menu" висит событие mouseover которое вызывает функцию из menu.js, но РЕАЛЬНО вызывается функция из slider.js.

Итак, описана проблема которую надо решить.
Первое что мне говорят 90% опрашиваемых - использовать noConflict. Ознакомившись с инструкцией на сайте jQuery сомневаюсь что это нужно. Но проверить надо, чтобы отбросить все сомнения.

Пожалуйста, расскажите доходчиво как использовать noConflict в этой ситуации чтобы 100% либо устранить проблему либо сказать что noConflict в данном случае не нужен.

----------------------
Собственно проблемная страничка: 2.html
Код слайдера закомментирован, меню работает: 1.html
  • Вопрос задан
  • 3215 просмотров
Пригласить эксперта
Ответы на вопрос 1
@jonnyEkb
На сколько помню noConflict используется если есть конфликт с другими фреймворками.
Для вас это значит что jQuery перестанет быть доступен по $, а будет доступен только по jQuery.
Пример: при включении noConflict запись вида $('#id') не будет работать, нужно будет писать jQuery ('#id')

В вашем случае, для начала заменил бы
var $j = jQuery.noConflict();
// Инициализация выпадающих меню
$j(document).ready(function() {
$j('#DropMenu_01').dropdown({
on : 'hover',
transition : 'drop'
});
});

var $q = jQuery.noConflict(),
revapi2;
$q(document).ready(function() {
// Запуск слайдера
revapi2 = $q('#rev_slider_2_1').show().revolution({});
});

на
jQuery(document).ready(function() {

jQuery('#DropMenu_01').dropdown({
on : 'hover',
transition : 'drop'
});

revapi2 = jQuery('#rev_slider_2_1').show().revolution({});
});

для начала.
А дальше стоит посмотреть код использованных вами плагинов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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