Detaillierte Erklärung zum Javascript-Event-Bubbling, Event-Capture und Event-Delegation

Detaillierte Erklärung zum Javascript-Event-Bubbling, Event-Capture und Event-Delegation

1. Ereignissprudeln : Wenn im Prozess der Ereignisausbreitung in JavaScript ein Ereignis für ein Element ausgelöst wird, wird das Ereignis schrittweise an die Vorgängerelemente weitergegeben, bis das Dokument erreicht ist. In einigen Browsern kann es sein, dass das Ereignis das Fenster erreicht. Nicht alle Ereignisse weisen ein Aufsteigen auf, z. B.: blur , focus , load

2. Ereignisdelegierung : Die Ereigniserfassung ist das genaue Gegenteil des Ereignis-Bubblings. Sie beginnt beim übergeordneten Element der obersten Ebene und endet mit dem Auslösen des Elements durch ein Ereignis.

Die Ereigniserfassung von js wird im Allgemeinen über das DOM2-Ereignismodell addEventListener implementiert:

target.addEventListener(Typ, Listener, UseCapture)

Der dritte Parameter ist standardmäßig auf „false“ gesetzt, was bedeutet, dass das Ereignis in der Bubbling-Phase ausgelöst wird. Wenn er auf „true“ gesetzt ist, wird es in der Capture-Phase ausgelöst. Generell scheint die Ereigniserfassung in unserer Arbeit selten verwendet zu werden. Aber ich muss immer noch verstehen

<div id="box">
    <div id="Mitte">
        <div id="inner"></div>
    </div>
</div>
<Skript>
//Ereigniserfassung window.onload=function(){
    let box = document.getElementById("box");
    let middle = document.getElementById("mitte");
    let inner = document.getElementById("inner");
    box.addEventListener("klicken",function(){console.log("box")},true);
    middle.addEventListener("klicken",function(){console.log("mitte")},true);
    inner.addEventListener("klicken",function(){console.log("inner")},true);
}
</Skript>
Klicken Sie auf „innen“. Die Konsole gibt Folgendes aus: „box, middle, inner“

Stoppen Sie das Aufsprudeln von Ereignissen

Normalerweise wird eine große Anzahl von Ereignissen verwendet, die das Aufsprudeln von Ereignissen ermöglichen. In einem bestimmten untergeordneten Tag müssen wir jedoch möglicherweise keine Ereignisse an das übergeordnete Element weitergeben. Zu diesem Zeitpunkt müssen wir das Aufsprudeln seiner Ereignisse verhindern.

Im Allgemeinen wird stopPropagation verwendet, um das Aufsteigen von Ereignissen zu verhindern. Im IE wird cancelBuble=true verwendet. stopPropagation ist auch eine Methode des Ereignisobjekts (Event). Seine Funktion besteht darin, das Aufsteigen von Ereignissen des Zielelements zu verhindern, verhindert jedoch nicht das Standardverhalten.

//Ereignisaufsteigen verhindern let btna = document.getElementById('btn');
btna.onclick=Funktion(e){
    Fenster.Ereignis? Fenster.Ereignis.AbbrechenBubble = true : e.stopPropagation();
 };

3. Ereignisdelegierung : Ereignisdelegierung kann auch Ereignisproxy genannt werden. Ereignisdelegierung nutzt Ereignis-Bubbling. Indem Sie nur einen Ereignishandler angeben, können Sie alle Ereignisse eines bestimmten Typs verwalten.

Vorteile: Die Reduzierung von DOM-Operationen kann die Leistung von Webseiten verbessern. Wenn ein übergeordnetes Element und viele untergeordnete Elemente einer Seite dasselbe Ereignis ausführen müssen, können wir nicht an jedes Element ein Ereignis binden.

<ul id="getNum">
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
</ul>
<Skript>
let ptclick = document.getElementById('getNum');
let lilist = ptclick.querySelectorAll('li');
für (lass i = 0; i <lilist.length; i++) {
    lilist[i].index = i;
};
ptclick.onclick = Funktion(e){
    var e = e || Fenster.Ereignis;
    var Ziel = e.Ziel || e.QuelleElement;
    Konsole.log(e.target.index);
};
</Skript>

Zusammenfassen

Dieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalten auf 123WORDPRESS.COM mehr Aufmerksamkeit schenken können!

Das könnte Sie auch interessieren:
  • Eine kurze Analyse von Event Bubbling und Event Capture in js
  • Detaillierte Analyse des Event-Bubbling-Mechanismus in JavaScript
  • Einführung in Event Bubbling und Event Capture in JS
  • Detaillierte Erläuterung von JS-Bubbling-Ereignissen und Beispielen zur Ereigniserfassung
  • Detaillierte Erklärung der JS-Ereignisdelegation
  • JavaScript fügt Ereignis-Listener zur Ereignisdelegierung in Batches hinzu. Detaillierter Prozess

<<:  Einige kleine Methoden, die häufig in HTML-Seiten verwendet werden

>>:  Zusammenfassung einiger Tipps zum MySQL-Indexwissen

Artikel empfehlen

Implementierung eines einfachen Rechners auf Basis von JavaScript

In diesem Artikel wird der spezifische JavaScript...

HTML css js implementiert Tab-Seite Beispielcode

Code kopieren Der Code lautet wie folgt: <html...

JS realisiert den Effekt des Bildwasserfallflusses

In diesem Artikel wird der spezifische JS-Code zu...

LinkedIn wird überarbeitet, um das Surfen auf der Website zu vereinfachen

Das geschäftliche Social-Networking-Portal Linked...

Lösung für das Problem, dass MySQL Daten sehr langsam löscht und einfügt

Wenn ein Unternehmensentwickler eine Insert-Anwei...

Vue-Statusverwaltung: Verwendung von Pinia statt Vuex

Inhaltsverzeichnis 1. Was ist Pinia? 2. Pinia ist...

Pull-Down-Aktualisierung und Pull-Up-Ladekomponenten basierend auf Vue-Kapselung

Basierend auf Vue und nativer JavaScript-Kapselun...

Beispiel für das Schreiben von mobilem H5 zum Aufrufen einer APP (IOS, Android)

iOS 1. URL-Schema Diese Lösung ist grundsätzlich ...

Netzwerkkonfiguration des Host Only+NAT-Modus unter VirtualBox

Die Netzwerkkonfiguration des Host Only+NAT-Modus...

Aktivieren Sie den SSHD-Vorgang im Docker

Installieren Sie zunächst den OpenSSH-Server im D...

So kapseln Sie die Rich-Text-Komponente von WangEditor in Angular

Die Rich-Text-Komponente ist eine sehr häufig ver...