Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   не отображать при клике на неактивную область (https://javascript.ru/forum/events/80413-ne-otobrazhat-pri-klike-na-neaktivnuyu-oblast.html)

GostWalk 02.06.2020 00:50

не отображать при клике на неактивную область
 
В наличии код

function t(e) {
    var n = document.querySelector(".js_toggle-menu"),
        i = document.querySelector(".js_menu-content"),
        p = document.querySelector(".search__trigger"),
        s = document.querySelector(".search__form");
    if (n && i) {
        var o = "true" === n.dataset.open;
        n.onclick = function() {
            t(!0)
        }, e && (o ? (n.dataset.open = "false", i.style.visibility = "hidden") : (p.dataset.open = "false", s.classList.remove("open"), n.dataset.open = "true", i.style.visibility = "visible"))
    }
}

Гамбургер меню открывает и закрыватся по клику на тригер, подскажите как добавить закрытие всплывашки по клику вне активной области?
(не на js_menu_content)

Подскажите пожалуйста, как реализовать?

рони 02.06.2020 08:06

GostWalk,
document.addEventListener('click', ({target}) => {
var n = document.querySelector(".js_toggle-menu");
if(n.dataset.open == "false") return;
if(!target.closest('.js_toggle-menu, .js_menu-content, .search__trigger, .search__form')){
n.click()
}
});

GostWalk 02.06.2020 14:32

Цитата:

Сообщение от рони (Сообщение 525285)
GostWalk,
document.addEventListener('click', ({target}) => {
var n = document.querySelector(".js_toggle-menu");
if(n.dataset.open == "false") return;
if(!target.closest('.js_toggle-menu, .js_menu-content, .search__trigger, .search__form')){
n.click()
}
});

:thanks:
спасибо, работает


Часовой пояс GMT +3, время: 19:00.