Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting

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

Всем привет!
И так, есть модальное окно, которое нужно скрыть при:
1. Клике на крестике в самом окне.
2. Клике в любой области страницы, исключая само окно.

nNqTa

Написал такой код:
// скрываем popup окно корзины при клике
    $('#container-system .popup-cart i.fa-times').click(function() {
        $('#container-system .popup-cart').fadeOut();
    });
    $('#container-system').click(function() {
        $('#container-system .popup-cart').fadeOut();
    });


Вопросы:
1. Грамотно-ли написан код? Предполагаю, что нет (опыта пока мало), а если нет, то как правильно?
2. Функции работают, за одним исключением, окно скрывается и при клике на само окно (а этого быть не должно)...

Спасибо!
  • Вопрос задан
  • 523 просмотра
Решения вопроса 4
iiiBird
@iiiBird
Пока ты спишь - твой конкурент совершенствуется
бинди вот это при открытии окна. только именно при открытии модалки. чтобы не висел клик везде и всегда
$(document).click( function(event){
		if(( $(event.target).closest("#container-system .popup-cart").length ))
		return;
		$('#container-system .popup-cart').fadeOut();
		event.stopPropagation();
	});
Ответ написан
@rudants
Front-end разработчик
Внутри #container-system на одном уровне с .popup-cart создай еще блок с затеменным фоном (.popup-layout, к примеру), при клике на него пускай скрывается форма. Ну а сам popup-cart свойством z-index подними выше блока с затеменным фоном.
Ответ написан
Комментировать
agmegadeth
@agmegadeth
Веб-разработчик в дизайн студии
а я бы сделал так:
$("#container-system").children().click(function(e){
	e.stopPropagation();
});
Ответ написан
Комментировать
@M-ka
frontend присматривающийся к ror
Поставить глобальную ловлю событий, отфильтровать клики, сравнить элемент с ай ди окна, крестика и прочих элементов(поискать элемент внутри окна), которые проигнорит. Для всего остального, закрыть... Предпочтительнее записать состояние куда то, что бы не обращаться по каждому клику к дереву...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Krasnodar_etc
@Krasnodar_etc
avito front
Вариантов с этим решением тебе уже накидали, я своё тогда не скажу)) Но вот в этом конкретном случае я бы предложил закрывать окошко через n-секунд даже без клика, через SetTimeout . А то некрасивое оно) Ну, лишние клики заставляешь делать там, где это не оюязательно
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы