Sobes.tech
Junior

Каква е разликата между event.preventDefault и event.stopPropagation?

sobes.tech AI

Отговор от 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() Спира разпространението/bubbling на събитието Не Да