PassFront
  1. PassFront
  2. База знаний
  3. DOM и браузер

Для чего нужен метод stopPropagation?

DOM и браузер

Метод `stopPropagation` нужен, чтобы остановить всплытие (и погружение) события — не дать ему распространяться дальше по дереву DOM к другим элементам.

Что делает

Вызванный на событии, он не даёт событию дойти до обработчиков на родительских (при всплытии) или дочерних (при погружении) элементах.

child.addEventListener('click', (e) => {
  e.stopPropagation(); // родитель не узнает о клике
});
parent.addEventListener('click', () => {
  console.log('не сработает');
});

Когда применяют

  • Вложенные интерактивные элементы: клик по кнопке внутри карточки не должен активировать клик по карточке.
  • Модальные окна: клик внутри окна не должен закрывать его через обработчик на оверлее.

stopPropagation против stopImmediatePropagation

  • stopPropagation — останавливает переход к другим элементам, но остальные обработчики на текущем элементе выполнятся.
  • stopImmediatePropagation — плюс не даёт выполниться другим обработчикам того же события на этом элементе.

Осторожно

Избыточный stopPropagation ломает делегирование событий и глобальные обработчики (аналитика, закрытие по клику вне). Применяйте точечно; часто лучше проверять event.target.

Коротко для собеседования

stopPropagation останавливает распространение события по дереву (всплытие/погружение). Нужен для вложенных кликов и модалок. Не путать с preventDefault (отмена действия браузера). Злоупотребление ломает делегирование.

Другие вопросы раздела