Aison
@Aison

Как сделать обработчик события только на нужный слой?

Приветствую, ребят.

На сайте имеется 12 блоков при нажатии на блок тот открывается т.е к нему добавляется класс active.

И вот в этом блоке есть ещё несколько кнопок и проблема в том, что если нажать на любую из них, то событие, которое стоит на этом блоке срабатывает и блок закрывается. кнопка конечно же успевает сработать.

как сделать так, чтобы такого не происходило?

var scrollPosition = null;
$('.js-o-card').on('click', function () {
	var $window = $(window);
	const scrollAnimationDuration = 1000;
	if (!$(this).hasClass('active-card')) {

		$(this).addClass('active-card');

		$('html,body').animate({
			scrollTop: $(".active-card .thumbnail").offset().top - $(window).height() / 3
		}, scrollAnimationDuration);

		scrollPosition = $window.scrollTop();
	} else {
		$(this).removeClass('active-card');

		$('html,body').animate({
			scrollTop: scrollPosition
		}, scrollAnimationDuration);

	}
});
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 2
imko
@imko
Senior Scratch Developer
https://learn.javascript.ru/event-bubbling
Тебе нужно просто прекратить всплытие, кнопка чать блока следовательно клие по кнопке всплывает на клик по блоку, так что кнопкам пиши в обработчик event.stopPropagation()
Ответ написан
wapster92
@wapster92 Куратор тега JavaScript
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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