@Mikhail_Litvinov
начинающий web-разработчик

Как исправить добавление класса двум элементам на JS?

Всем привет! Возникла небольшая проблема в проекте:

Создал сабменю через jquery, но работает оно очень странно. При наведении мыши на элемент сверху вниз, активный класс вешается нормально и сабменю открывается без проблем. Однако, если навести мышь снизу вверх, активный класс вешается еще и на соседний элемент, открывая и его. Причем это не пропадает до перезагрузки страницы. Пожалуйста, скажите как это исправить? Я уже всю голову сломал. Собственно, сам js:
let timeout = null;

$(menuBtns).mouseenter (function(){
    this.className += " active";
    if (main.classList.contains("active")) {
        mainSub.classList.add("active");
    }
    if (about.classList.contains("active")) {
        aboutSub.className += " active";
    }
    if (gallery.classList.contains("active")) {
        gallerySub.className += " active";
    }
}).mouseleave (function (){
    timeout = setTimeout(() => {
        this.classList.remove("active");
        mainSub.classList.remove("active");
        aboutSub.classList.remove("active");
    }, 100)    
})

$(subMenu).mouseenter (function(){
    clearTimeout(timeout);
}).mouseleave (function (){
    timeout = setTimeout(() => {
        this.classList.remove("active");
        mainSub.classList.remove("active");
        aboutSub.classList.remove("active");
        gallerySub.classList.remove("active");
    }, 100)
})


Я не стал сюда запихивать все переменные, чтобы укоротить код, но они определены и с этим проблем нет. Собственно, ссылка на сам проект.
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Arge-dev
Front-end Developer
Может быть коллизия из-за того, что у тебя у момент открытия меню, под твоим хавером появляется саб меню, задача стоит сделать это на jquery? Это весьма просто можно заэвейдить с помощью css. Но в любом случае, в нынешнем коде ты используешь много ванильных функций для добавления классов в jquery есть toggleClass, addClass, removeClass и все манипуляции с открытием саб меню должны следовать от родителя
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы