Wondermarin
@Wondermarin

Обход e.stopPropagation()?

Здравствуйте, есть такой код:
e.stopPropagation();

        const cssClasses = {
            DROPDOWNMENU: 'lf-content__dd',
            DROPDOWNMENU_HIDE: 'lf-content__dd--hide'
        }

        let dropdownMenu = this.parentNode.querySelector('.'+cssClasses.DROPDOWNMENU);

        dropdownMenu.classList.toggle(cssClasses.DROPDOWNMENU_HIDE);

        document.addEventListener('click', function(e) {
            if (dropdownMenu !== e.target
                && !dropdownMenu.classList.contains(cssClasses.DROPDOWNMENU_HIDE)) {
                    dropdownMenu.classList.add(cssClasses.DROPDOWNMENU_HIDE);
                }
        });

Он сработает если нажать на триггер dropdown меню. Тут все работает как и ожидается - окно с меню откроется.
При попытке нажать вне этого меню - закроется, но если нажать на другое такое меню (их может быть несколько) или просто на любой другой элемент (имеющий e.stopPropagation()), то закрытия не произойдет.

Я понимаю что это из-за того, что e.stopPropagation() не дает дойти клику до document
Но я не понимаю как обойти это, чтобы при нажатии вне этого меню на любой другой элемент (кроме него самого) оно закрывалось. Заранее спасибо за помощь.
  • Вопрос задан
  • 237 просмотров
Пригласить эксперта
Ответы на вопрос 1
KickeRocK
@KickeRocK
FrontFinish
Засунуть его в клик?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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