tripcollor
@tripcollor

Как закрывть div при клике вне этого дива?

Написал вот такой скрипт https://jsfiddle.net/tripcollor/L2rnLxL6/
есть кнопка по клику на которую показывается скрытый блок и по второму клику скрывается.
Как сделать чтобы при нажатии вне кнопки и самого блока, показываемый блок тоже скрывался?
  • Вопрос задан
  • 3561 просмотр
Решения вопроса 1
copist
@copist
Empower people to give
Поисковая фраза в Google "hide click outside HTML JS"

https://stackoverflow.com/questions/152975/how-do-...
https://stackoverflow.com/questions/1403615/use-jq...
https://stackoverflow.com/questions/13892375/how-t...

Относительно указанного примера:
var clickCount = 1;
$('.button').click(function(event){ // при клике по кнопке - обработать тут, но не давать обработать дальше
  event.stopPropagation();
	if(clickCount == 1){
			$(this).children('.show-block').show();
			clickCount = 2;
		}else{
			$(this).children('.show-block').hide();
			clickCount = 1;
		}
});

$('.button .show-block').click(function(event) { // при клике по блоку - вообще проигнорировать, иначе будет закрываться даже если в блок кликнуть
	event.stopPropagation();
});

$(window).click(function(event) { // при клике в любом месте страницы - закрывать блок
	$('.button .show-block').hide();
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
AlexBelkevich
@AlexBelkevich
Нет нерешаемых задач. Есть деревянные клиенты
$(document).mouseup(function (event) {
        if ($(".show-block").has(event.target).length === 0){
            $(".show-block").hide();
        }
    });
Ответ написан
@devstudent
frontend-developer
добавить
$(document).mouseup(function (e){// обрабатываем клик в любой точке 
		  if (jQuery(e.target).closest(".show-block").length > 0){ // проверка , произошел ли клик вне элемента, который надо по этому клику скрыть
		  	 return false; // клик по элементу игнорируем 
		  }
		  
		  else $(".show-block").hide(300);// клик вне элемента
       clickCount = 1;
		 });
Ответ написан
Ваш ответ на вопрос

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

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