jQuery Succinctly Events & jQuery

Ikke begrenset til en enkelt klar () hendelse

Det er viktig å huske på at du kan erklære så mange egendefinerte klar() hendelser som du vil. Du er ikke begrenset til å legge ved en enkelt .klar() hendelse til dokumentet. De klar() hendelser utføres i den rekkefølgen de er inkludert i.

Merknader: Passerer jQuery-funksjonen, en funksjon - f.eks. jQuery (funciton () // kode her) - er en snarvei for jQuery (dokument) .ready ().


Fest / fjern hendelser ved hjelp av bind () og unbind ()

Bruker binde() metode - f.eks. jQuery ( 'a'). bind ( 'klikk' funksjon () ) - Du kan legge til noen av følgende standardbehandlere til de aktuelle DOM-elementene.

  • uklarhet
  • fokus
  • laste
  • endre størrelse på
  • bla
  • lesse
  • beforeunload
  • klikk
  • DblClick
  • mousedown
  • mouseup
  • mousemove
  • mus over
  • mouseout
  • endring
  • å velge
  • sende inn
  • keydown
  • tastetrykk
  • keyup
  • feil

Selvfølgelig, basert på DOM-standarder, er det bare enkelte håndtere som faller sammen med bestemte elementer.

I tillegg til denne listen over standardhåndterere kan du også utnytte binde() å knytte jQuery tilpassede håndtere - f.eks. mouseenter og mouseleave - så vel som eventuelle tilpassede håndtere du kan opprette.

For å fjerne standardbehandlere eller tilpassede håndteringsverktøy, passerer vi bare frigi () Metode håndteringsnavnet eller egendefinert håndteringsnavn som må fjernes - f.eks. jQuery ( 'a'). frigi (klikk). Hvis ingen parametere sendes til frigi (), Det vil fjerne alle håndtere tilknyttet et element.

Disse konseptene som diskuteres, er uttrykt i kodeseksempelet nedenfor.

     

Merknader: jQuery gir flere snarveier til binde() Metode for bruk med alle standard DOM-hendelser, som ekskluderer egendefinerte jQuery-hendelser som mouseenter og mouseleave. Ved å bruke disse snarveiene innebærer det bare å bytte hendelsesnavn som metodenavn - f.eks. .Klikk (), mouseout (), fokus().

Du kan knytte ubegrensede håndtere til et enkelt DOM-element ved hjelp av jQuery.

jQuery gir en() hendelseshåndteringsmetode for å binde en hendelse til DOM-elementer som vil bli utført en gang og deretter fjernet. De en() Metoden er bare en wrapper for binde() og frigi ().


Programmatisk oppfordre en bestemt handler via korte hendelsesmetoder

Synkroniseringen av snarveien - f.eks. .Klikk (), mouseout (), og fokus() - for å binde en hendelseshandler til et DOM-element kan også brukes til å påkalle håndteringsprogrammer. For å gjøre dette, bruk bare snarveishendelsesmetoden uten å overføre den til en funksjon. I teorien betyr dette at vi kan binde en handler til et DOM-element og deretter umiddelbart påkalle denne handleren. Nedenfor viser jeg dette via Klikk () begivenhet.

    Si hei  Si hei     

Merknader: Det er også mulig å bruke arrangementet avtrekker() metode for å påkalle bestemte håndtere - f.eks. jQuery ('a'). klikk (funksjon () alarm ('hei')). trigger ('klikk'). Dette vil også fungere med namespaced og tilpassede hendelser.


jQuery Normaliserer hendelsesobjektet

jQuery normaliserer hendelsesobjektet i henhold til W3C-standarder. Dette betyr at når hendelsesobjektet sendes til en funksjonshåndterer, trenger du ikke å bekymre deg for nettleserespesifikke implementeringer av hendelsesobjektet (for eksempel Internet Explorer window.event). Du kan bruke følgende attributter og metoder for hendelsesobjektet uten bekymringer fra nettleserforskjeller fordi jQuery normaliserer hendelsesobjektet.

Hendelsesobjektattributter

  • event.type
  • event.target
  • event.data
  • event.relatedTarget
  • event.currentTarget
  • event.pageX
  • event.pageY
  • event.result
  • event.timeStamp

Event Object Methods

  • event.preventDefault ()
  • event.isDefaultPrevented ()
  • event.stopPropagation ()
  • event.isPropagationStopped ()
  • event.stopImmediatePropagation ()
  • event.isImmediatePropagationStopped ()

For å få tilgang til det normaliserte jQuery-hendelsesobjektet, bare passere den anonyme funksjonen, sendt til en jQuery-hendelsesmetode, en parameter som heter "event" (eller hva du vil kalle det). Deretter, inne i den anonyme tilbakeringingsfunksjonen, bruk parameteren for å få tilgang til hendelsesobjektet. Nedenfor er et kodet eksempel på dette konseptet.

       

Grokking Event Namespacing

Ofte vil vi ha et objekt i DOM som må ha flere funksjoner knyttet til en enkelt hendelseshåndterer. For eksempel, la oss ta størrelsesbehandleren. Ved hjelp av jQuery kan vi legge til så mange funksjoner til window.resize handler som vi liker. Men hva skjer når vi trenger å fjerne bare en av disse funksjonene, men ikke alle av dem? Hvis vi bruker $ (Vindu) .unbind ( 'resize'), alle funksjoner knyttet til window.resize handler vil bli fjernet. Ved navngivning av en handler (f.eks. resize.unique), kan vi tildele en unik krok til en bestemt funksjon for fjerning.

       

I koden ovenfor legger vi til to funksjoner til størrelsesbehandleren. Den andre (dokumentrekkefølgen) endre størrelsen til tilføyd tilføyet bruker hendelsesnavnspacing og fjerner umiddelbart denne hendelsen ved hjelp av frigi (). Jeg gjorde dette for å gjøre det poenget at den første funksjonen ikke er fjernet. Namespacing-hendelser gir oss mulighet til å merke og fjerne unike funksjoner som er tilordnet samme handler på et enkelt DOM-element.

I tillegg til å unbinding en bestemt funksjon assosiert med et enkelt DOM element og handler, kan vi også bruke hendelses navnespace til å utelukkende påberope (ved hjelp av avtrekker()) en bestemt håndterer og funksjon knyttet til et DOM-element. I koden nedenfor blir to klikkhendelser lagt til , og deretter bruker namespacing, bare en påberopes.

    klikk    

Merknader: Det er ingen grense for dybden eller antall navneområder som brukes - f.eks. resize.layout.headerFooterContent.

Namespacing er en fin måte å beskytte, påberope, fjerne eventuelle eksklusive håndterere som et plugin kan kreve.

Namespacing jobber med tilpassede hendelser samt standard hendelser - f.eks. click.unique eller myclick.unique.


Grokking Event delegasjon

Hendelse delegering er avhengig av hendelse propagering (a.b.bobling). Når du klikker på en innsiden av a

  • , som er innsiden av a