Forklaring af Event-Propagation og Delegation
Begivenhedspropagering
Begivenhedspropagering beskriver, hvordan en begivenhed bevæger sig gennem DOM'en efter at være blevet udløst, og den har tre forskellige faser: Fangst, Mål og Boble faser.
Fangstfase (Capture)
Begivenheden starter ved roden af DOM-træet (window) og bevæger sig ned mod målelementet. Eventlyttere i denne fase opfanger begivenheden, mens den bevæger sig nedad.
Målfase
Begivenheden når målelementet (det element, der udløste begivenheden). Det er her, eventlyttere, der er tilknyttet selve målelementet, udføres.
Boblefase (Bubble)
Efter at have nået målelementet begynder begivenheden at bevæge sig opad i DOM-træet til roden (window), bobler gennem overordnede elementer. Dette er den mest anvendte fase, som gør det muligt for overordnede elementer at reagere på begivenheder udløst af underordnede elementer.
index.html
index.css
index.js
Begivenheden forplanter sig gennem DOM'en, når button klikkes. Først udløses begivenheden på button (mål-fase), derefter bobler den op til den indre div og til sidst til den ydre div (boblingsfase).
Begivenhedsdelegering
Begivenhedsdelegering er en teknik, der udnytter begivenhedsforplantning til at håndtere begivenheder fra underordnede elementer ved hjælp af én enkelt begivenhedslytter på et overordnet element. I stedet for at tilføje individuelle lyttere til hvert underordnet element, lytter et overordnet element efter begivenheder, der bobler op fra dets underordnede elementer. Denne tilgang har to hovedfordele:
- Ydelse: Reduktion af antallet af begivenhedslyttere forbedrer ydelsen, især i situationer hvor elementer oprettes dynamisk (f.eks. en liste, der vokser, når nye elementer tilføjes);
- Vedligeholdelse: Begivenhedsdelegering forenkler koden, især når der arbejdes med store DOM-strukturer eller dynamisk indhold.
index.html
index.css
index.js
I stedet for at tilføje klik-lyttere til hvert enkelt button-element, tilføjes en enkelt lytter til div-forældrelementet. Begivenheden bobler op fra button-elementerne til div, hvor den håndteres.
Dårlig tilgang
God tilgang
Praktisk eksempel: Håndtering af dynamisk liste
Event delegation er ideel til at håndtere interaktioner i lister eller tabeller, der kan vokse over tid (f.eks. tilføjelse af opgaver til en to-do-liste eller produkter til en indkøbskurv). Når elementer tilføjes eller fjernes, håndterer den overordnede container (som ul eller table) alle interaktioner, hvilket sparer behovet for at tilføje eller fjerne lyttere til hvert enkelte underordnede element.
index.html
index.css
index.js
1. Hvad er event propagation?
2. I hvilken fase bevæger en begivenhed sig op ad DOM-træet efter at have nået sit målelement?
3. Hvorfor er begivenhedsdelegering nyttig, især med dynamisk indhold?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Can you explain the difference between capturing and bubbling phases in more detail?
How does event delegation work with dynamically added elements?
Can you provide a code example of event delegation in JavaScript?
Awesome!
Completion rate improved to 2.22
Forklaring af Event-Propagation og Delegation
Stryg for at vise menuen
Begivenhedspropagering
Begivenhedspropagering beskriver, hvordan en begivenhed bevæger sig gennem DOM'en efter at være blevet udløst, og den har tre forskellige faser: Fangst, Mål og Boble faser.
Fangstfase (Capture)
Begivenheden starter ved roden af DOM-træet (window) og bevæger sig ned mod målelementet. Eventlyttere i denne fase opfanger begivenheden, mens den bevæger sig nedad.
Målfase
Begivenheden når målelementet (det element, der udløste begivenheden). Det er her, eventlyttere, der er tilknyttet selve målelementet, udføres.
Boblefase (Bubble)
Efter at have nået målelementet begynder begivenheden at bevæge sig opad i DOM-træet til roden (window), bobler gennem overordnede elementer. Dette er den mest anvendte fase, som gør det muligt for overordnede elementer at reagere på begivenheder udløst af underordnede elementer.
index.html
index.css
index.js
Begivenheden forplanter sig gennem DOM'en, når button klikkes. Først udløses begivenheden på button (mål-fase), derefter bobler den op til den indre div og til sidst til den ydre div (boblingsfase).
Begivenhedsdelegering
Begivenhedsdelegering er en teknik, der udnytter begivenhedsforplantning til at håndtere begivenheder fra underordnede elementer ved hjælp af én enkelt begivenhedslytter på et overordnet element. I stedet for at tilføje individuelle lyttere til hvert underordnet element, lytter et overordnet element efter begivenheder, der bobler op fra dets underordnede elementer. Denne tilgang har to hovedfordele:
- Ydelse: Reduktion af antallet af begivenhedslyttere forbedrer ydelsen, især i situationer hvor elementer oprettes dynamisk (f.eks. en liste, der vokser, når nye elementer tilføjes);
- Vedligeholdelse: Begivenhedsdelegering forenkler koden, især når der arbejdes med store DOM-strukturer eller dynamisk indhold.
index.html
index.css
index.js
I stedet for at tilføje klik-lyttere til hvert enkelt button-element, tilføjes en enkelt lytter til div-forældrelementet. Begivenheden bobler op fra button-elementerne til div, hvor den håndteres.
Dårlig tilgang
God tilgang
Praktisk eksempel: Håndtering af dynamisk liste
Event delegation er ideel til at håndtere interaktioner i lister eller tabeller, der kan vokse over tid (f.eks. tilføjelse af opgaver til en to-do-liste eller produkter til en indkøbskurv). Når elementer tilføjes eller fjernes, håndterer den overordnede container (som ul eller table) alle interaktioner, hvilket sparer behovet for at tilføje eller fjerne lyttere til hvert enkelte underordnede element.
index.html
index.css
index.js
1. Hvad er event propagation?
2. I hvilken fase bevæger en begivenhed sig op ad DOM-træet efter at have nået sit målelement?
3. Hvorfor er begivenhedsdelegering nyttig, især med dynamisk indhold?
Tak for dine kommentarer!