Некорректно срабатывает js (jquery) script

392
06 февраля 2017, 18:01

Есть скрипт, который при наведении на элемент меню должен менять класс у блока с подкатегориями.

$('.js-menu-trigger').hover(function () {
  if(!$(this).hasClass('sub--null'))
    {
      $('.js-menu-screen').toggleClass('is-visible');
      $(this).toggleClass('sub--visible');
    }
});

Проблема в том, что если навести на элемент меню до того, как загрузится страница, то скрипт прописывает элементу класс, который сохраняется в html. И из за этого отображается блок, который должен быть виден только по наведении на элемент.

Answer 1

А что если вы будете использовать обе функции hover, чтобы указывать конкретно, что при наведении есть класс, при отведении класса нет?

$('.js-menu-trigger.sub--null').hover(function () {
      $('.js-menu-screen').addClass('is-visible');
      $(this).addClass('sub--visible');
    },function () {
      $('.js-menu-screen').removeClass('is-visible');
      $(this).removeClass('sub--visible');
    }
});
READ ALSO
Вызов Java Script без клика

Вызов Java Script без клика

Есть код всплывающей подсказки notification, показ через onclick

429
Оптимизация кода фиксированного блока

Оптимизация кода фиксированного блока

Можно ли это как то упростить:

358
jQuery 3 - альтернатива функции live

jQuery 3 - альтернатива функции live

Подскажите пожалуйста, раньше использовал функцию live или модуль livequery для доступа к загруженным с помощью AJAX элементам

412