Здравствуйте, есть такой код:
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
Но я не понимаю как обойти это, чтобы при нажатии вне этого меню на любой другой элемент (кроме него самого) оно закрывалось. Заранее спасибо за помощь.