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);

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

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

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