jQuery Kort gezegd Evenementen en jQuery

Niet beperkt tot een enkele ready () gebeurtenis

Het is belangrijk om in gedachten te houden dat u zoveel gewoontes kunt aangeven klaar() evenementen zoals je zou willen. Je bent niet beperkt tot het bijvoegen van een single .klaar() evenement van het document. De klaar() gebeurtenissen worden uitgevoerd in de volgorde waarin ze zijn opgenomen.

Opmerkingen: Doorgeven van de jQuery-functie, een functie - bijv. jQuery (funciton () // code hier) - is een snelkoppeling voor jQuery (document) .ready ().


Events koppelen / verwijderen met bind () en unbind ()

De ... gebruiken binden() methode - bijv. jQuery ( 'a'). bind ( 'klik', function () ) - u kunt een van de volgende standaardhandlers toevoegen aan de juiste DOM-elementen.

  • vervagen
  • focus
  • laden
  • verkleinen
  • rol
  • lossen
  • beforeunload
  • Klik
  • DblClick
  • mouseDown
  • mouseUp
  • mousemove
  • mouseover
  • mouseout
  • verandering
  • kiezen
  • voorleggen
  • toets neer
  • toets indrukken
  • keyup
  • fout

Het is duidelijk dat op basis van DOM-standaarden alleen bepaalde afhandelaars samenvallen met bepaalde elementen.

Naast deze lijst met standaardhandlers kunt u ook gebruikmaken van binden() om jQuery-handlers toe te voegen, bijvoorbeeld. MouseEnter en mouseLeave - evenals alle aangepaste handlers die u kunt maken.

Om standaard handlers of aangepaste handlers te verwijderen, geven we gewoon de ontbinden () methode de naam van de handler of de naam van de aangepaste handler die moet worden verwijderd - bijv. jQuery ( 'a'). ontbinden ( 'klik'). Als er geen parameters worden doorgegeven ontbinden (), het verwijdert alle handlers die aan een element zijn gekoppeld.

Deze concepten die zojuist zijn besproken, worden uitgedrukt in het codevoorbeeld hieronder.

     

Opmerkingen: jQuery biedt verschillende snelkoppelingen naar de binden() methode voor gebruik met alle standaard DOM-gebeurtenissen, waaronder aangepaste jQuery-evenementen zoals MouseEnter en mouseLeave. Als u deze sneltoetsen gebruikt, hoeft u alleen de naam van de gebeurtenis in te voeren als de naam van de methode, bijvoorbeeld. .Klik(), mouseout (), focus().

U kunt met jQuery onbeperkte handlers aan een enkel DOM-element koppelen.

jQuery biedt de een() event-afhandelingsmethode om gemakkelijk een gebeurtenis te binden aan DOM-elementen die eenmaal worden uitgevoerd en vervolgens worden verwijderd. De een() methode is gewoon een verpakking voor binden() en ontbinden ().


Programmeer een specifieke handler via korte gebeurtenismethodes

De syntaxis van de snelkoppeling - bijv. .Klik(), mouseout (), en focus() - voor het binden van een gebeurtenishandler aan een DOM-element kan ook worden gebruikt om handlers programmatisch aan te roepen. Om dit te doen, gebruikt u eenvoudigweg de snelkoppelingsgebeurtenismethode zonder een functie door te geven. In theorie betekent dit dat we een handler aan een DOM-element kunnen binden en vervolgens die handler onmiddellijk kunnen aanroepen. Hieronder demonstreer ik dit via de Klik() evenement.

    Zeg gedag  Zeg gedag     

Opmerkingen: Het is ook mogelijk om het evenement te gebruiken op gang brengen() methode om specifieke handlers aan te roepen - bijv. jQuery ('a'). klik (functie () alert ('hi')). trigger ('klik'). Dit werkt ook met naamgepaste en aangepaste gebeurtenissen.


jQuery Normaliseert het gebeurtenisobject

jQuery normaliseert het gebeurtenisobject volgens de W3C-normen. Dit betekent dat wanneer het gebeurtenisobject wordt doorgegeven aan een functiehandler, u zich geen zorgen hoeft te maken over browserspecifieke implementaties van het gebeurtenisobject (bijvoorbeeld Internet Explorer window.event). U kunt de volgende attributen en methoden van het gebeurtenisobject zorgeloos gebruiken van browserverschillen, omdat jQuery het gebeurtenisobject normaliseert.

Event Object Attributen

  • 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 ()

Om toegang te krijgen tot het genormaliseerde jQuery-gebeurtenisobject, geeft u eenvoudig de anonieme functie door, wordt deze doorgegeven aan een jQuery-gebeurtenismethode, een parameter met de naam "gebeurtenis" (of hoe u hem ook wilt noemen). Voer vervolgens, binnen de anonieme callback-functie, de parameter in om toegang te krijgen tot het gebeurtenisobject. Hieronder is een gecodeerd voorbeeld van dit concept.

       

Grokking Event Namespacing

Vaak hebben we een object in de DOM dat verschillende functies gekoppeld moet hebben aan een enkele gebeurtenishandler. Laten we bijvoorbeeld de handlanger van formaat nemen. Met behulp van jQuery kunnen we zoveel functies toevoegen aan de window.resize handler zoals we willen. Maar wat gebeurt er als we slechts één van deze functies moeten verwijderen, maar niet allemaal? Als we gebruiken $ (Venster) .unbind ( 'resize'), alle functies gekoppeld aan de window.resize handler zal worden verwijderd. Door een manager een naam te geven (bijv. resize.unique), kunnen we een unieke haak toewijzen aan een specifieke functie voor verwijdering.

       

In de bovenstaande code voegen we twee functies toe aan de handlanger voor het wijzigen van de grootte. De tweede (documentvolgorde) grootte van de toegevoegde gebeurtenis maakt gebruik van event namespacing en verwijdert deze gebeurtenis onmiddellijk met behulp van ontbinden (). Ik heb dit gedaan om te benadrukken dat de eerste functie niet is verwijderd. Namespacing-events geven ons de mogelijkheid om unieke functies die zijn toegewezen aan dezelfde handler op een enkel DOM-element te labelen en te verwijderen.

Naast het ontkoppelen van een specifieke functie die is gekoppeld aan een enkel DOM-element en -handler, kunnen we ook event namespacing gebruiken om exclusief aan te roepen (met behulp van op gang brengen()) een specifieke handler en functie gekoppeld aan een DOM-element. In de onderstaande code worden twee klikgebeurtenissen toegevoegd , en vervolgens met namespacing, wordt er maar één aangeroepen.

    Klik    

Opmerkingen: Er is geen limiet voor de diepte of het aantal gebruikte naamruimten - bijv. resize.layout.headerFooterContent.

Namespacing is een geweldige manier om exclusieve handlers die een plug-in nodig heeft te beschermen, aan te roepen en te verwijderen.

Namespacing werkt met aangepaste gebeurtenissen evenals standaardgebeurtenissen - bijv. click.unique of myclick.unique.


Grokking Event Delegation

Afvaardiging van evenementen is afhankelijk van gebeurtenispropagatie (a.k.a. borrelen). Wanneer u op een klikt binnenkant van een

  • , welke binnen een is