Здравствуйте.
Есть сайт на D6, стоит модуль vote up down для оценки комментариев. Все работает нормально, голосование происходит без обновления страницы. Решил сделать адаптивную версию сайта и для меню использую следующий код jQuery для добавления класса в div:
$(function() {
$('.menu__icon').on('click', function() {
$(this).closest('.header1').toggleClass('menu_state_open');
});
});
})(jQuery);
Код не работает. Обновил jQuery до версии 1.6, код заработал, но модуль vote up down перестал работать, выскакивает окошко с предложением подтвердить свое действие и ошибкой.
Как решить задачу и почему возникает конфликт?
Комментарии
Все способные объяснить это - вымерли.
Придется гуглить, в попытках найти старинные свертки, написанные языками забытых предков.
Чего тут "объяснять"?
on - в 1.7 появился
для ранних версий - bind(), live()
Все это в behaviors.
Йумар в прошлом году оставил, сорян.
Разные методы, совместимы с разными версиями о чем написано в ошибках и на api.jQuery.com например .on с версии 1.7
https://api.jquery.com/on/#on-events-selector-data-handler
Но это не единственная беда, частично выручает jquery_update для D6 в dev версии надо ставить включать для основного 1.3 версию, например всякие загрузки файлов на edit и т.д. будут тогда работать, ну а нужные страницы можно через hook_jquery_update_alter повесить нужную версию jquery.
Вопрос в том, что этот код работает в 1.6 и в 1.7, которые я подключаю через jquery_update
А вот модуль vote up перестает работать. В моем случае нужно с кодом меню работать, ибо копаться в модуле сложнее. Как мне модифицировать этот код, что бы он заработал на старых версиях jquery? Или его можно на чистый js переписать?
Легче переписать код тем более что он не сложный, если задачка в переключение класса для родителя с header , вообще лучше иcпользовать .on на context
$('.header1').on('click', '.menu__icon', function(){ ... });
...
И closest тогда не нужен, вообще отладка быстро решит проблему.