Проблема с dropdown
При разработке дропдауна столкнулся со следующей проблемой. Идея в том, чтобы при клике на кнопку открывать дропдаун. Если дропдаун открыт, то при клике на любой элемент кроме его - закрывать дропдаун. Пишу код на чистом JS.
Вызов дропдауна.
<button class="header__btn header__services">услуги</button>
<ul class="header__submenu-1">
<li class="header__subitem-1">
<a href="#" class="header__item-link header__subitem-link">Проектирование</a>
</li>
</ul>
let btnServices = document.querySelector('.header__services'),
blockSubmenu1 = document.querySelector('.header__submenu-1');
btnServices.addEventListener('click', () => {
blockSubmenu1.classList.add('header__submenu-1_active');
setTimeout(hideSubmenu1, 400);
});
Закрытие дропдауна.
function hideSubmenu1(){
document.body.addEventListener('click', (e) => {
if(e.target !== blockSubmenu1) {
blockSubmenu1.classList.remove('header__submenu-1_active');
}
});
}
При загрузке страницы и клике на кнопку btnServices дропдаун открывается. При клике на любое место закрывается, но не учитывается условие игноррирования закрытия при клике на blockSubmenu1. К тому же после выполнения данных действий повторно dropdown не открывается.
Источник: Stack Overflow на русском