Junior
Was ist der Unterschied zwischen event.preventDefault und event.stopPropagation?
sobes.tech KI
Antwort von AI
event.preventDefault() hebt die Standardaktion des Browsers für ein Ereignis auf (z.B. das Navigieren beim Klicken auf <a>), und event.stopPropagation() stoppt die Weiterleitung oder das Bubbelen des Ereignisses im DOM-Baum, wodurch die gleichen Handler auf Eltern- oder Kindelementen nicht aufgerufen werden.
Beispiel:
// Angenommen, es gibt einen Link innerhalb eines div
const link = document.querySelector('a');
const div = document.querySelector('div');
// Klick-Handler für den Link
link.addEventListener('click', (event) => {
alert('Klick auf den Link');
event.preventDefault(); // Verhindert die Navigation
});
// Klick-Handler für das div
div.addEventListener('click', (event) => {
alert('Klick auf das div');
// Ohne event.stopPropagation() würde dieser Handler nach dem Klick auf den Link aufgerufen werden
});
Wenn event.stopPropagation() zum Link-Handler hinzugefügt wird:
// Klick-Handler für den Link mit Stoppen der Propagation
link.addEventListener('click', (event) => {
alert('Klick auf den Link');
event.preventDefault();
event.stopPropagation(); // Stoppt die Weiterleitung zum div
});
// Klick-Handler für das div
div.addEventListener('click', (event) => {
alert('Klick auf das div'); // Dieser Alert erscheint nicht beim Klick auf den Link
});
Zusammenfassungstabelle:
| Methode | Aktion | Einfluss auf das Standardverhalten | Einfluss auf die Ereignisweiterleitung |
|---|---|---|---|
event.preventDefault() |
Verhindert die Standardaktion des Browsers | Ja | Nein |
event.stopPropagation() |
Stoppt die Weiterleitung/Bubbling des Ereignisses | Nein | Ja |