suchen
HeimWeb-Frontendjs-TutorialAnalyse von Beispielen für das Bubbling von DOM-Ereignissen in JQuery_jquery

In diesem Artikel wird das Bubbling von DOM-Ereignissen in JQuery anhand von Beispielen analysiert. Teilen Sie es als Referenz mit allen. Die spezifische Analyse lautet wie folgt:

Was sprudelt

Es kann mehrere Ereignisse auf der Seite geben und mehrere Elemente können auf dasselbe Ereignis reagieren. Angenommen, es gibt zwei Elemente auf der Webseite, ein Element ist im anderen Element verschachtelt und beide sind an Klickereignisse gebunden. Gleichzeitig ist das Klickereignis auch an das Körperelement gebunden.

<div id="content">
  外层div元素
  <span>内层span元素</span>
  外层div元素
</div>

<script type="text/javascript">
$(function(){
  // 为span元素绑定click事件
  $('span').bind("click",function(){
    var txt = $('#msg').html() + "<p>内层span元素被点击.<p/>";
    $('#msg').html(txt);
  });
  // 为div元素绑定click事件
  $('#content').bind("click",function(){
   var txt = $('#msg').html() + "<p>外层div元素被点击.<p/>";
    $('#msg').html(txt);
  });
  // 为body元素绑定click事件
  $("body").bind("click",function(){
    var txt = $('#msg').html() + "<p>body元素被点击.<p/>";
    $('#msg').html(txt);
  });
})
</script>

Wenn auf das interne Span-Element geklickt wird, dh das Klickereignis des Span-Elements ausgelöst wird, werden 3 Datensätze ausgegeben. Durch einfaches Klicken auf das innere Span-Element wird das Klickereignis ausgelöst, das an das äußere div-Element und das body-Element gebunden ist. Dies wird durch Event-Bubbling verursacht. Während Sie auf das span-Element klicken, klicken Sie auch auf das Element div, das das span-Element enthält, und auf das Element body, das das div-Element enthält. Jedes Element reagiert dann in einer bestimmten Reihenfolge auf das Klickereignis.

Das Klickereignis des

-Elements „blubbert“ in der folgenden Reihenfolge.

1.
2.


3.

Der Grund, warum es „Bubbling“ genannt wird, liegt darin, dass das Ereignis gemäß der DOM-Hierarchie weiterhin wie eine Blase nach oben steigt.

Probleme durch Event-Bubbling

Das Sprudeln von Ereignissen kann unerwartete Auswirkungen haben. Im obigen Beispiel wollten wir ursprünglich nur das Klickereignis des -Elements auslösen, aber gleichzeitig wurden auch die Klickereignisse des

-Elements ausgelöst. Daher ist es notwendig, den Umfang der Veranstaltungen einzuschränken. Wenn auf das Element geklickt wird, wird nur das Klickereignis des Elements
ausgelöst. Wenn auf das Element geklickt wird, wird nur das Klickereignis des
-Elements ausgelöst, nicht jedoch das des -Elements.

Ereignisobjekt

Da IE-DOM und Standard-DOM Ereignisobjekte auf unterschiedliche Weise implementieren, wird es schwieriger, Ereignisobjekte in verschiedenen Browsern abzurufen. Um dieses Problem zu lösen, hat JQuery die erforderlichen Erweiterungen und Kapselungen vorgenommen, sodass das Ereignisobjekt und einige Eigenschaften des Ereignisobjekts in jedem Browser problemlos abgerufen werden können.

Die Verwendung von Ereignisobjekten in Programmen ist sehr einfach. Sie müssen der Funktion lediglich einen Parameter hinzufügen:

$("element").bind("click",function(event){ 
  //event : 事件对象 
  //... 
});

Auf diese Weise wird beim Klicken auf das Element „Element“ das Ereignisobjekt erstellt. Auf dieses Ereignisobjekt kann nur von Ereignisbehandlungsfunktionen zugegriffen werden. Nachdem die Ereignisbehandlungsfunktion ausgeführt wurde, wird das Ereignisobjekt zerstört.

Stoppen Sie das Sprudeln von Ereignissen

Das Stoppen des Event-Bubblings kann verhindern, dass Event-Handler anderer Objekte im Event ausgeführt werden. Die Methode stopPropagation() wird in JQuery bereitgestellt, um das Sprudeln von Ereignissen zu stoppen.

$(function(){
   // 为span元素绑定click事件
  $('span').bind("click",function(event){
    var txt = $('#msg').html() + "内层span元素被点击";
    $('#msg').html(txt);
    event.stopPropagation(); // 阻止事件冒泡
  });
})

Wenn auf das -Element geklickt wird, wird nur das Klickereignis auf dem -Element ausgelöst, nicht jedoch die Klickereignisse des

-Elements. Die gleiche Methode kann verwendet werden, um das Blasenproblem für das
-Element zu lösen.
$('#content').bind("click",function(event){ 
 var txt = $('#msg').html() + "<p>外层div元素被点击.<p/>"; 
 $('#msg').html(txt); 
 event.stopPropagation(); // 阻止事件冒泡 
});

Auf diese Weise wird beim Klicken auf das Element nur der entsprechende Inhalt und kein anderer Inhalt ausgegeben.

Standardverhalten blockieren

Elemente in Webseiten haben ihr eigenes Standardverhalten. Wenn Sie beispielsweise auf einen Hyperlink klicken, wird das Formular gesendet. Manchmal ist es erforderlich, das Standardverhalten von Elementen zu verhindern.

In JQuery wird die Methode „preventDefault()“ bereitgestellt, um das Standardverhalten von Elementen zu verhindern.

In Projekten ist es beispielsweise häufig erforderlich, das Formular zu überprüfen. Wenn auf die Schaltfläche „Senden“ geklickt wird, wird der Formularinhalt überprüft, z. B. ob es sich bei einem Element um ein Pflichtfeld handelt und ob ein Element 6 Zeichen lang ist usw. Wenn das Formular die Formularübermittlung nicht verhindert, wenn die Übermittlungsbedingungen erfüllt sind (Standardverhalten).

<form action="test.html">
用户名:<input type="text" id="username" />
<br/>
<input type="submit" value="提交" id="sub"/>
</form>

$(function(){
 $("#sub").bind("click",function(event){
   var username = $("#username").val(); //获取元素的值
   if(username==""){ //判断值是否为空
      $("#msg").html("<p>文本框的值不能为空.</p>"); //提示信息
      event.preventDefault(); //阻止默认行为 ( 表单提交 )
     }
 })
})

Wenn der Benutzername leer ist und Sie auf die Schaltfläche „Senden“ klicken, erscheint eine Eingabeaufforderung und das Formular kann nicht gesendet werden. Das Absenden des Formulars ist erst nach Eingabe des Benutzernamens möglich. Es ist ersichtlich, dass die Methode „preventDefault()“ die Übermittlung des Formulars verhindern kann.

Wenn Sie das Sprudeln und das Standardverhalten für das Ereignisobjekt gleichzeitig stoppen möchten, können Sie in der Ereignisbehandlungsfunktion false zurückgeben. Dies ist eine Kurzform zum Aufrufen der stopPapagation()-Methode und der PreventDefault()-Methode für das Ereignisobjekt.

Im Formularbeispiel kann event.preventDefault(); umgeschrieben werden als: return false;

Sie können event.stopPropaqation(); im Event-Bubbling-Beispiel auch umschreiben als: return false;

Ereigniserfassung

Ereigniserfassung und Ereignissprudeln sind zwei gegensätzliche Prozesse. Die Ereigniserfassung wird von oben nach unten ausgelöst. Noch ein Beispiel für ein Bubbling-Ereignis: Das Klickereignis eines Elements wird in der folgenden Reihenfolge erfasst.

1.
2.


3.

Natürlich beginnt die Ereigniserfassung beim äußersten Element und geht dann zum innersten Element über. Daher wird das gebundene Klickereignis zuerst an das

-Element, dann an das
-Element übergeben.

Leider unterstützen nicht alle gängigen Browser die Ereigniserfassung und dieser Fehler kann nicht mit JavaScript behoben werden. JQuery unterstützt keine Ereigniserfassung. Wenn Leser die Ereigniserfassung verwenden müssen, verwenden Sie bitte direkt natives JavaScript.

Ich hoffe, dass dieser Artikel für alle bei der jQuery-Programmierung hilfreich sein wird.

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Die Zukunft von Python und JavaScript: Trends und VorhersagenDie Zukunft von Python und JavaScript: Trends und VorhersagenApr 27, 2025 am 12:21 AM

Zu den zukünftigen Trends von Python und JavaScript gehören: 1. Python wird seine Position in den Bereichen wissenschaftlicher Computer und KI konsolidieren. JavaScript wird die Entwicklung der Web-Technologie fördern. Beide werden die Anwendungsszenarien in ihren jeweiligen Bereichen weiter erweitern und mehr Durchbrüche in der Leistung erzielen.

Python vs. JavaScript: Entwicklungsumgebungen und ToolsPython vs. JavaScript: Entwicklungsumgebungen und ToolsApr 26, 2025 am 12:09 AM

Sowohl Python als auch JavaScripts Entscheidungen in Entwicklungsumgebungen sind wichtig. 1) Die Entwicklungsumgebung von Python umfasst Pycharm, Jupyternotebook und Anaconda, die für Datenwissenschaft und schnelles Prototyping geeignet sind. 2) Die Entwicklungsumgebung von JavaScript umfasst Node.JS, VSCODE und WebPack, die für die Entwicklung von Front-End- und Back-End-Entwicklung geeignet sind. Durch die Auswahl der richtigen Tools nach den Projektbedürfnissen kann die Entwicklung der Entwicklung und die Erfolgsquote der Projekte verbessert werden.

Ist JavaScript in C geschrieben? Prüfung der BeweiseIst JavaScript in C geschrieben? Prüfung der BeweiseApr 25, 2025 am 12:15 AM

Ja, der Motorkern von JavaScript ist in C. 1) Die C -Sprache bietet eine effiziente Leistung und die zugrunde liegende Steuerung, die für die Entwicklung der JavaScript -Engine geeignet ist. 2) Die V8-Engine als Beispiel wird sein Kern in C geschrieben, wobei die Effizienz und objektorientierte Eigenschaften von C kombiniert werden.

JavaScripts Rolle: das Web interaktiv und dynamisch machenJavaScripts Rolle: das Web interaktiv und dynamisch machenApr 24, 2025 am 12:12 AM

JavaScript ist das Herzstück moderner Websites, da es die Interaktivität und Dynamik von Webseiten verbessert. 1) Es ermöglicht die Änderung von Inhalten, ohne die Seite zu aktualisieren, 2) Webseiten durch DOMAPI zu manipulieren, 3) Komplexe interaktive Effekte wie Animation und Drag & Drop, 4) die Leistung und Best Practices optimieren, um die Benutzererfahrung zu verbessern.

C und JavaScript: Die Verbindung erklärteC und JavaScript: Die Verbindung erklärteApr 23, 2025 am 12:07 AM

C und JavaScript erreichen die Interoperabilität durch WebAssembly. 1) C -Code wird in das WebAssembly -Modul zusammengestellt und in die JavaScript -Umgebung eingeführt, um die Rechenleistung zu verbessern. 2) In der Spieleentwicklung kümmert sich C über Physik -Engines und Grafikwiedergabe, und JavaScript ist für die Spiellogik und die Benutzeroberfläche verantwortlich.

Von Websites zu Apps: Die verschiedenen Anwendungen von JavaScriptVon Websites zu Apps: Die verschiedenen Anwendungen von JavaScriptApr 22, 2025 am 12:02 AM

JavaScript wird in Websites, mobilen Anwendungen, Desktop-Anwendungen und serverseitigen Programmierungen häufig verwendet. 1) In der Website -Entwicklung betreibt JavaScript DOM zusammen mit HTML und CSS, um dynamische Effekte zu erzielen und Frameworks wie JQuery und React zu unterstützen. 2) Durch reaktnatives und ionisches JavaScript wird ein plattformübergreifendes mobile Anwendungen entwickelt. 3) Mit dem Elektronenframework können JavaScript Desktop -Anwendungen erstellen. 4) Node.js ermöglicht es JavaScript, auf der Serverseite auszuführen und unterstützt hohe gleichzeitige Anforderungen.

Python gegen JavaScript: Anwendungsfälle und Anwendungen verglichenPython gegen JavaScript: Anwendungsfälle und Anwendungen verglichenApr 21, 2025 am 12:01 AM

Python eignet sich besser für Datenwissenschaft und Automatisierung, während JavaScript besser für die Entwicklung von Front-End- und Vollstapel geeignet ist. 1. Python funktioniert in Datenwissenschaft und maschinellem Lernen gut und unter Verwendung von Bibliotheken wie Numpy und Pandas für die Datenverarbeitung und -modellierung. 2. Python ist prägnant und effizient in der Automatisierung und Skripten. 3. JavaScript ist in der Front-End-Entwicklung unverzichtbar und wird verwendet, um dynamische Webseiten und einseitige Anwendungen zu erstellen. 4. JavaScript spielt eine Rolle bei der Back-End-Entwicklung durch Node.js und unterstützt die Entwicklung der Vollstapel.

Die Rolle von C/C bei JavaScript -Dolmetschern und CompilernDie Rolle von C/C bei JavaScript -Dolmetschern und CompilernApr 20, 2025 am 12:01 AM

C und C spielen eine wichtige Rolle in der JavaScript -Engine, die hauptsächlich zur Implementierung von Dolmetschern und JIT -Compilern verwendet wird. 1) C wird verwendet, um JavaScript -Quellcode zu analysieren und einen abstrakten Syntaxbaum zu generieren. 2) C ist für die Generierung und Ausführung von Bytecode verantwortlich. 3) C implementiert den JIT-Compiler, optimiert und kompiliert Hot-Spot-Code zur Laufzeit und verbessert die Ausführungseffizienz von JavaScript erheblich.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool