Назад к вопросам
Junior
170
questionbank

В чем разница между event.preventDefault и event.stopPropagation?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

event.preventDefault() отменяет стандартное действие браузера для события (например, переход по ссылке при клике на <a>), а event.stopPropagation() останавливает всплытие или погружение события в DOM-дереве, предотвращая вызов тех же обработчиков на родительских или дочерних элементах.

Пример:

// Предположим, есть ссылка внутри div
const link = document.querySelector('a');
const div = document.querySelector('div');

// Обработчик клика по ссылке
link.addEventListener('click', (event) => {
  alert('Клик по ссылке');
  event.preventDefault(); // Отменяет переход по ссылке
});

// Обработчик клика по div
div.addEventListener('click', (event) => {
  alert('Клик по div');
  // Без event.stopPropagation() этот обработчик вызовется после клика по ссылке
});

Если добавить event.stopPropagation() к обработчику ссылки:

// Обработчик клика по ссылке с остановкой всплытия
link.addEventListener('click', (event) => {
  alert('Клик по ссылке');
  event.preventDefault();
  event.stopPropagation(); // Останавливает всплытие события до div
});

// Обработчик клика по div
div.addEventListener('click', (event) => {
  alert('Клик по div'); // Этот alert не отобразится при клике на ссылку
});

Сводная таблица:

Метод Действие Влияние на стандартное поведение Влияние на распространение события
event.preventDefault() Отменяет стандартное действие браузера Да Нет
event.stopPropagation() Останавливает всплытие/погружение события Нет Да