Конфликт кода с разными версиями jQuery

Аватар пользователя buldozer_kpi buldozer_kpi 3 января в 16:12

Здравствуйте.
Есть сайт на D6, стоит модуль vote up down для оценки комментариев. Все работает нормально, голосование происходит без обновления страницы. Решил сделать адаптивную версию сайта и для меню использую следующий код jQuery для добавления класса в div:

(function($){
  $(function() {
    $('.menu__icon').on('click', function() {
      $(this).closest('.header1').toggleClass('menu_state_open');
    });
  });
})(jQuery);

Код не работает. Обновил jQuery до версии 1.6, код заработал, но модуль vote up down перестал работать, выскакивает окошко с предложением подтвердить свое действие и ошибкой.

Как решить задачу и почему возникает конфликт?

0 Thanks

Комментарии

Аватар пользователя bumble bumble 3 января в 16:34

Все способные объяснить это - вымерли.
Придется гуглить, в попытках найти старинные свертки, написанные языками забытых предков.

Аватар пользователя adano adano 3 января в 16:53

Чего тут "объяснять"?
on - в 1.7 появился
для ранних версий - bind(), live()

Все это в behaviors.

Аватар пользователя sas@drupal.org sas@drupal.org 3 января в 21:31

Разные методы, совместимы с разными версиями о чем написано в ошибках и на 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.

Аватар пользователя buldozer_kpi buldozer_kpi 3 января в 23:30

Вопрос в том, что этот код работает в 1.6 и в 1.7, которые я подключаю через jquery_update
А вот модуль vote up перестает работать. В моем случае нужно с кодом меню работать, ибо копаться в модуле сложнее. Как мне модифицировать этот код, что бы он заработал на старых версиях jquery? Или его можно на чистый js переписать?

Аватар пользователя sas@drupal.org sas@drupal.org 4 января в 10:22

Легче переписать код тем более что он не сложный, если задачка в переключение класса для родителя с header , вообще лучше иcпользовать .on на context

...
$('.header1').on('click', '.menu__icon', function(){ ... });
...

И closest тогда не нужен, вообще отладка быстро решит проблему.