jQuery Kurz und bündig Events & jQuery

Nicht auf ein einzelnes ready () -Ereignis beschränkt

Es ist wichtig zu wissen, dass Sie beliebig viele Sitten angeben können bereit() Veranstaltungen, wie Sie möchten. Sie sind nicht darauf beschränkt, eine einzelne anzuschließen .bereit() Ereignis zum Dokument. Das bereit() Ereignisse werden in der Reihenfolge ausgeführt, in der sie enthalten sind.

Anmerkungen: Beim Übergeben der jQuery-Funktion kann eine Funktion - z. jQuery (funciton () // Code hier) - ist eine Abkürzung für jQuery (document) .ready ().


Anhängen / Entfernen von Ereignissen mithilfe von bind () und unbind ()

Verwendung der binden() Methode - z.B.. jQuery ('a'). bind ('click', function () ) - Sie können den entsprechenden DOM-Elementen beliebige der folgenden Standardhandler hinzufügen.

  • verwischen
  • Fokus
  • Belastung
  • Größe ändern
  • scrollen
  • entladen
  • vor dem Entladen
  • klicken
  • dblclick
  • Maus nach unten
  • Mouseup
  • mousemove
  • Mouseover
  • Mouseout
  • Veränderung
  • wählen
  • einreichen
  • Taste nach unten
  • Tastendruck
  • keyup
  • Error

Auf der Grundlage der DOM-Standards stimmen natürlich nur bestimmte Handler mit bestimmten Elementen überein.

Zusätzlich zu dieser Liste von Standardhandlern können Sie auch Hebel nutzen binden() Anpassen von benutzerdefinierten jQuery-Handlern - z. Mouseenter und mouseleave - sowie alle benutzerdefinierten Handler, die Sie erstellen können.

Um Standard-Handler oder benutzerdefinierte Handler zu entfernen, übergeben wir einfach die lösen() method Der Name des Handlers oder der Name des benutzerdefinierten Handlers, der entfernt werden muss - z. jQuery ('a'). Unbindung ('Klick'). Wenn keine Parameter übergeben werden lösen(), Es werden alle Handler entfernt, die mit einem Element verbunden sind.

Diese eben diskutierten Konzepte werden im nachstehenden Codebeispiel ausgedrückt.

     

Anmerkungen: jQuery bietet mehrere Verknüpfungen zum binden() Methode zur Verwendung mit allen Standard-DOM-Ereignissen, wobei benutzerdefinierte jQuery-Ereignisse wie ausgeschlossen werden Mouseenter und mouseleave. Die Verwendung dieser Abkürzungen beinhaltet einfach, den Namen des Ereignisses als Methodennamen zu ersetzen - z. .klicken(), mouseout (), Fokus().

Sie können mit jQuery unbegrenzte Handler an ein einzelnes DOM-Element anhängen.

jQuery liefert die ein() Ereignisbehandlungsmethode, um ein Ereignis bequem an DOM-Elemente zu binden, die einmal ausgeführt und anschließend entfernt werden. Das ein() Methode ist nur ein Wrapper für binden() und lösen().


Programmgesteuerter Aufruf eines bestimmten Handlers über Short-Event-Methoden

Die Abkürzungssyntax - z. .klicken(), mouseout (), und Fokus() - Zum Binden eines Ereignishandlers an ein DOM-Element können auch programmgesteuerte Handler verwendet werden. Verwenden Sie dazu einfach die Shortcut-Ereignismethode, ohne eine Funktion zu übergeben. Theoretisch bedeutet dies, dass wir einen Handler an ein DOM-Element binden und diesen Handler sofort aufrufen können. Im Folgenden zeige ich das über die klicken() Veranstaltung.

    Sag Hallo  Sag Hallo     

Anmerkungen: Es ist auch möglich, die Veranstaltung zu nutzen auslösen() ein Verfahren zum Aufrufen bestimmter Handler - z. jQuery ('a'). click (function () alert ('hi')). trigger ('click'). Dies funktioniert auch mit Namensraum- und benutzerdefinierten Ereignissen.


jQuery Normalisiert das Ereignisobjekt

jQuery normalisiert das Ereignisobjekt gemäß den W3C-Standards. Dies bedeutet, dass Sie sich bei der Übergabe des Ereignisobjekts an einen Funktionshandler nicht um browserspezifische Implementierungen des Ereignisobjekts kümmern müssen (z. B. von Internet Explorer) window.event). Sie können die folgenden Attribute und Methoden des Ereignisobjekts sorgenfrei verwenden, da jQuery das Ereignisobjekt normalisiert.

Ereignisobjektattribute

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

Ereignisobjektmethoden

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

Um auf das normalisierte jQuery-Ereignisobjekt zuzugreifen, übergeben Sie einfach die anonyme Funktion, die an eine jQuery-Ereignismethode übergeben wird, einen Parameter mit dem Namen "event" (oder wie auch immer Sie sie aufrufen möchten). Verwenden Sie dann in der anonymen Rückruffunktion den Parameter, um auf das Ereignisobjekt zuzugreifen. Nachfolgend finden Sie ein codiertes Beispiel für dieses Konzept.

       

Grokking Event Namespacing

Oft haben wir ein Objekt im DOM, das mehrere Funktionen haben muss, die an einen einzelnen Event-Handler gebunden sind. Nehmen wir zum Beispiel den Größenänderungs-Handler. Mit jQuery können wir so viele Funktionen hinzufügen Fenstergröße Handler wie wir wollen. Aber was passiert, wenn wir nur eine dieser Funktionen entfernen müssen, aber nicht alle? Wenn wir verwenden $ (Fenster) .unbind ('resize'), alle Funktionen, die an den Fenstergröße Handler wird entfernt. Durch den Namensraum eines Handlers (z. resize.unique), können wir einer bestimmten Funktion einen eindeutigen Haken zum Entfernen zuweisen.

       

Im obigen Code fügen wir dem Größenänderungshandler zwei Funktionen hinzu. Das zweite hinzugefügte Größenänderungsereignis (Dokumentreihenfolge) verwendet Ereignis-Namespacing und entfernt dieses Ereignis anschließend sofort mit lösen(). Ich habe dies getan, um den Punkt hervorzuheben, dass die erste angefügte Funktion nicht entfernt wird. Namespace-Ereignisse geben uns die Möglichkeit, eindeutige Funktionen zu benennen und zu entfernen, die demselben Handler für ein einzelnes DOM-Element zugewiesen sind.

Zusätzlich zum Aufheben einer Bindung einer bestimmten Funktion, die einem einzelnen DOM-Element und Handler zugeordnet ist, können wir auch Ereignis-Namespacing verwenden, um exklusiv (using auslösen()) einen bestimmten Handler und eine Funktion, die einem DOM-Element zugeordnet sind. Im folgenden Code werden zwei Klickereignisse hinzugefügt , und dann mit dem Namespacing wird nur einer aufgerufen.

    klicken    

Anmerkungen: Es gibt keine Begrenzung für die Tiefe oder Anzahl der verwendeten Namespaces - z. resize.layout.headerFooterContent.

Namespacing ist eine großartige Möglichkeit, alle exklusiven Handler zu schützen, aufzurufen und zu entfernen, die ein Plugin möglicherweise benötigt.

Namespacing funktioniert sowohl mit benutzerdefinierten Ereignissen als auch mit Standardereignissen - z. click.unique oder myclick.unique.


Grokking Event Delegation

Die Delegierung von Ereignissen beruht auf der Weitergabe von Ereignissen (a.k.a. bubbling). Wenn Sie auf eine innerhalb eines

  • , das ist innerhalb eines