@mishapsv

Как выбрать все элементы страницы, кроме одного класса и его предков?

Есть поп-ап, нужно, чтобы он закрывался, когда щелкают вне его области (назначаем addEventListener по клику).
Не могу сообразить, как это сделать.

АПД. Вот как реализован показ и скрытие при нажатии на блок:

var link = document.querySelector(".trigger"); - кликаем по блоку
var menu = document.querySelector(".right-popup"); - блок к которому нужно добавить класс

link.addEventListener("click", function(event) { - ловим клик по блоку
event.preventDefault();
menu.classList.toggle("right-popup--click") - добавляем/убираем класс (показываем/прячем блок)
});

Нужно аналогично.
  • Вопрос задан
  • 438 просмотров
Решения вопроса 1
DIITHiTech
@DIITHiTech
Fullstack javascript developer
Ну взять и проверять не потомок ли корневого элемента popup, написал лежа, так что не проверял - но суть ясна -простая как велосипед.

function isChild(child, parent) {              
                var current=child;    
                if(!child||!parent)return false;
                if(child===parent)return true;
                
                while (current = current.parentNode) {
                    if(current==parent)return true;
                }
                
                return false;
            }

...
 
if(!isChild(event.target, popupElement)){
   popup.close();
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 19:51
15000 руб./за проект
22 нояб. 2024, в 19:15
200000 руб./за проект
22 нояб. 2024, в 18:50
30000 руб./за проект