Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Forklaring av Hendelsespropagering og Delegering | Hendelseshåndtering og Brukerinteraksjoner i JavaScript
Avansert JavaScript-mestring

bookForklaring av Hendelsespropagering og Delegering

Hendelsespropagering

Hendelsespropagering beskriver hvordan en hendelse beveger seg gjennom DOM-en etter at den er utløst, og den har tre distinkte faser: Fangst, Mål og Boble-faser.

Fangstfase (Capture)

Hendelsen starter ved roten av DOM-treet (window) og beveger seg nedover mot målelementet. Hendelseslyttere i denne fasen fanger opp hendelsen mens den beveger seg nedover.

Mål-fase

Hendelsen når målelementet (elementet som utløste hendelsen). Dette er hvor hendelseslyttere som er knyttet til selve målelementet blir utført.

Boblefase (Bubble)

Etter å ha nådd målelementet, begynner hendelsen å bevege seg oppover DOM-treet til roten (window), og bobler gjennom overordnede elementer. Dette er den mest brukte fasen, og gjør det mulig for overordnede elementer å reagere på hendelser utløst av underordnede elementer.

index.html

index.html

index.css

index.css

index.js

index.js

copy

Hendelsen forplanter seg gjennom DOM-en når button klikkes. Først utløses hendelsen på button (mål-fase), deretter bobler den opp til den indre div og til slutt til den ytre div (boblingsfase).

Hendelsesdelegering

Hendelsesdelegering er en teknikk som utnytter hendelsesforplantning for å håndtere hendelser fra barneelementer ved å bruke én enkelt hendelseslytter på et overordnet element. I stedet for å legge til individuelle lyttere på hvert barnelement, lytter et overordnet element etter hendelser som bobler opp fra barna. Denne tilnærmingen har to hovedfordeler:

  1. Ytelse: Redusert antall hendelseslyttere gir bedre ytelse, spesielt i situasjoner der elementer opprettes dynamisk (for eksempel en liste som vokser etter hvert som nye elementer legges til);
  2. Vedlikeholdbarhet: Hendelsesdelegering forenkler koden, spesielt ved arbeid med store DOM-strukturer eller dynamisk innhold.
index.html

index.html

index.css

index.css

index.js

index.js

copy

I stedet for å legge til klikklyttere på hvert enkelt button-element, legges én enkelt lytter til på div-overordnede element. Hendelsen bobler opp fra button-elementene til div, hvor den håndteres.

Dårlig tilnærming

God tilnærming

Praktisk eksempel: Håndtering av dynamiske lister

Hendelsesdelegering er ideelt for å administrere interaksjoner i lister eller tabeller som kan vokse over tid (for eksempel å legge til oppgaver i en gjøremålsliste, eller produkter i en handlekurv). Etter hvert som elementer legges til eller fjernes, håndterer foreldrekonteineren (som ul eller table) alle interaksjoner, noe som sparer behovet for å legge til eller fjerne lyttere på hvert enkelt barnelement.

index.html

index.html

index.css

index.css

index.js

index.js

copy

1. Hva er hendelsespropagering?

2. I hvilken fase beveger en hendelse seg oppover DOM-treet etter å ha nådd sitt målelement?

3. Hvorfor er hendelsesdelegering nyttig, spesielt med dynamisk innhold?

question mark

Hva er hendelsespropagering?

Select the correct answer

question mark

I hvilken fase beveger en hendelse seg oppover DOM-treet etter å ha nådd sitt målelement?

Select the correct answer

question mark

Hvorfor er hendelsesdelegering nyttig, spesielt med dynamisk innhold?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 4

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 2.22

bookForklaring av Hendelsespropagering og Delegering

Sveip for å vise menyen

Hendelsespropagering

Hendelsespropagering beskriver hvordan en hendelse beveger seg gjennom DOM-en etter at den er utløst, og den har tre distinkte faser: Fangst, Mål og Boble-faser.

Fangstfase (Capture)

Hendelsen starter ved roten av DOM-treet (window) og beveger seg nedover mot målelementet. Hendelseslyttere i denne fasen fanger opp hendelsen mens den beveger seg nedover.

Mål-fase

Hendelsen når målelementet (elementet som utløste hendelsen). Dette er hvor hendelseslyttere som er knyttet til selve målelementet blir utført.

Boblefase (Bubble)

Etter å ha nådd målelementet, begynner hendelsen å bevege seg oppover DOM-treet til roten (window), og bobler gjennom overordnede elementer. Dette er den mest brukte fasen, og gjør det mulig for overordnede elementer å reagere på hendelser utløst av underordnede elementer.

index.html

index.html

index.css

index.css

index.js

index.js

copy

Hendelsen forplanter seg gjennom DOM-en når button klikkes. Først utløses hendelsen på button (mål-fase), deretter bobler den opp til den indre div og til slutt til den ytre div (boblingsfase).

Hendelsesdelegering

Hendelsesdelegering er en teknikk som utnytter hendelsesforplantning for å håndtere hendelser fra barneelementer ved å bruke én enkelt hendelseslytter på et overordnet element. I stedet for å legge til individuelle lyttere på hvert barnelement, lytter et overordnet element etter hendelser som bobler opp fra barna. Denne tilnærmingen har to hovedfordeler:

  1. Ytelse: Redusert antall hendelseslyttere gir bedre ytelse, spesielt i situasjoner der elementer opprettes dynamisk (for eksempel en liste som vokser etter hvert som nye elementer legges til);
  2. Vedlikeholdbarhet: Hendelsesdelegering forenkler koden, spesielt ved arbeid med store DOM-strukturer eller dynamisk innhold.
index.html

index.html

index.css

index.css

index.js

index.js

copy

I stedet for å legge til klikklyttere på hvert enkelt button-element, legges én enkelt lytter til på div-overordnede element. Hendelsen bobler opp fra button-elementene til div, hvor den håndteres.

Dårlig tilnærming

God tilnærming

Praktisk eksempel: Håndtering av dynamiske lister

Hendelsesdelegering er ideelt for å administrere interaksjoner i lister eller tabeller som kan vokse over tid (for eksempel å legge til oppgaver i en gjøremålsliste, eller produkter i en handlekurv). Etter hvert som elementer legges til eller fjernes, håndterer foreldrekonteineren (som ul eller table) alle interaksjoner, noe som sparer behovet for å legge til eller fjerne lyttere på hvert enkelt barnelement.

index.html

index.html

index.css

index.css

index.js

index.js

copy

1. Hva er hendelsespropagering?

2. I hvilken fase beveger en hendelse seg oppover DOM-treet etter å ha nådd sitt målelement?

3. Hvorfor er hendelsesdelegering nyttig, spesielt med dynamisk innhold?

question mark

Hva er hendelsespropagering?

Select the correct answer

question mark

I hvilken fase beveger en hendelse seg oppover DOM-treet etter å ha nådd sitt målelement?

Select the correct answer

question mark

Hvorfor er hendelsesdelegering nyttig, spesielt med dynamisk innhold?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 4
some-alt