NeXan87
@NeXan87
Фрилансер

Как удалить класс блока при клике по его фону?

Всем привет! Уже час бьюсь над простой формулой.
jQuery(document).ready(function() {
		$('.search-submit').click(function(){
		$('.header-search').toggleClass('show');
		});
		if ($('.header-search').hasClass('show')) {
			$('#blog').click(function(){
			$('.header-search').removeClass('show');
			})
		}
	});

При клике на блок с классом header-search, к нему добавляется класс show, при повторном клике - удаляется. Но если кликать фону, пусть это будет body id="blog", то класс show не удаляется. Без условия if вторая часть кода работает, но при клике класс show добавляется и сразу удаляется, что логично. Тут проблема в условии. Если блок header-search имеет класс show, то при клике по body, удалить класс show в блоке header-search. Код конечно простецкий, но мне уже надоело рыть интернет, поэтому решил спросить)
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
NeXan87
@NeXan87 Автор вопроса
Фрилансер
На самом деле рабочий код должен выглядеть так, нашел решение:
$(document).ready(function() {
		var search_submit = $(".search-submit");
		var search_form = $(".header-search");
		$(search_submit).click(function(){
			$(search_form).toggleClass('show');
		});
		$(document).mouseup(function (e){ // событие клика по веб-документу
			if (!search_form.is(e.target) && search_form.has(e.target).length === 0) { // если клик был не по нашему блоку и не по его дочерним элементам
				$(search_form).removeClass('show'); // скрываем его
			};
		});

	});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Simply1993
@Simply1993
Frontend developer
Надо навесить на #blog сразу обработчик click и внутри него проверяй условие.
Примерно так
$('#blog').click(function(){
   if ($('.header-search').hasClass('show')) {
      $('.header-search').removeClass('show');
   }
})


А то Вы вешаете обработчик только после срабатывания условия ($('.header-search').hasClass('show'))
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект