@smithana

Как закрыть попап при клике вне его на чистом js?

Всегда для этих целей использовал этот код на jquery:
$(document).mouseup(function (e){
if (!$('.popup').is(e.target) && $('.popup').has(e.target).length === 0){
$('.popup').hide();
}
});

Но сейчас нужно это реализовать без jquery.

Этот код работает, но не совсем так:
document.addEventListener('mouseup', function(e){
if(e.target.className == '.popup-parent'){
popup.style.display = 'none';
}
});

Проблема в том, что если нажать кнопку мыши на попапе, вывести за её пределы и там отпустить, то jquery ничего не закроет, а нативный закроет.

аналогов для is и has я не нашёл. Подскажите пожалуйста как корректнее переделать код.
Спасибо.
  • Вопрос задан
  • 5624 просмотра
Решения вопроса 1
Immortal_pony
@Immortal_pony Куратор тега JavaScript
Проблема в том, что если нажать кнопку мыши на попапе, вывести за её пределы и там отпустить, то jquery ничего не закроет, а нативный закроет.


Ну повесьте не mousedown, а не на mouseup. Например так:

var popup = document.querySelector('.popup');
document.addEventListener('mousedown', function(e){
    if(e.target.closest('.popup') === null){
        popup.style.display = 'none';
    }
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@M-ka
frontend присматривающийся к ror
не читал на тыц, но в целом код не верный у автора...
итого, как делают обычно: загруз, док клик ф-я с разборкой контента, обход хранилища. В нужный момент обработчик в хранилище закинуть и запуск по необходимости....
Ответ написан
Ваш ответ на вопрос

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

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