Sobes.tech
Junior

Mis vahe on event.preventDefault ja event.stopPropagation vahel?

sobes.tech AI

Vastus AI-lt

event.preventDefault() tühistab brauseri vaikimisi tegevuse sündmuse ajal (näiteks <a> lingile klikkides), samas kui event.stopPropagation() peatab sündmuse leviku või süvenemise DOM-puusse, vältides sama töötleja käivitamist vanem- või laps-elementidel.

Näide:

// Oletame, et on link divi sees
const link = document.querySelector('a');
const div = document.querySelector('div');

// Kliki sündmuse töötleja lingile
link.addEventListener('click', (event) => {
  alert('Klõps linkil');
  event.preventDefault(); // Tühistab lingi navigeerimise
});

// Kliki sündmuse töötleja divil
div.addEventListener('click', (event) => {
  alert('Klõps divil');
  // Ilma event.stopPropagation()-ita käivitatakse see pärast klikki lingil
});

Kui lisada event.stopPropagation() lingi töötlejale:

// Kliki sündmuse töötleja lingil ja leviku peatamine
link.addEventListener('click', (event) => {
  alert('Klõps linkil');
  event.preventDefault();
  event.stopPropagation(); // peatab sündmuse leviku divini
});

// Kliki sündmuse töötleja divil
div.addEventListener('click', (event) => {
  alert('Klõps divil'); // See alert ei ilmu, kui klõpsata lingil
});

Kokkuvõte:

Meetod Toiming Mõju brauseri vaikimisi käitumisele Mõju sündmuse levikule
event.preventDefault() Tühistab brauseri vaikimisi tegevuse Jah Ei
event.stopPropagation() Peatab sündmuse leviku või süvenemise Ei Jah