@MT_verst

Почему не срабатывает click jQuery?

Имеется такой код:

$('.menu-item-has-children').click(function(){
		if ($(this).hasClass('open')) {
			$(this).removeClass('open');
		}else {
			$(this).addClass('open');
		}
	});

			$(document).mouseup(function (e){ // событие клика по веб-документу
		var div = $(".sub-menu"); // тут указываем ID элемента
		if (!div.is(e.target) // если клик был не по нашему блоку
		    && div.has(e.target).length === 0) { // и не по его дочерним элементам
			$('.menu-item-has-children').removeClass('open'); // скрываем его
		}
	});

Первая часть кода отвечает за добавление класса 'open' и удаление его по второму клику.
Вторая часть кода убирает класс 'open' при клике вне блока.
Так вот второй клик на ссылку почему-то не убирает класс 'open', без второго кода все работает, но закрытие при клике вне блока нужно. Не могу понять, где происходит конфликт
  • Вопрос задан
  • 68 просмотров
Решения вопроса 1
TAbrahamyan
@TAbrahamyan
const menuItem = '.menu-item-has-children';

$(menuItem).click(function(){
  $(this).toggleClass('open');
});

$(document).click(e => {
  if (!e.target.closest(menuItem)) {
		$(menuItem).removeClass('open');
  }
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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