Heim Web-Frontend js-Tutorial Einschränkungen von Bubbling-Events: Wann kann Bubbling nicht implementiert werden?

Einschränkungen von Bubbling-Events: Wann kann Bubbling nicht implementiert werden?

Jan 13, 2024 pm 03:22 PM
事件 限制 sprudelndes Ereignis sprudelnd Nicht erreichbar

Einschränkungen von Bubbling-Events: Wann kann Bubbling nicht implementiert werden?

Einschränkungen von Sprudelereignissen: Unter welchen Umständen kann Sprudeln nicht erreicht werden?

In der Front-End-Entwicklung verwenden wir häufig Event-Bubbling, um Ereignisse von DOM-Elementen zu verarbeiten. Allerdings ist Sprudeln manchmal kein Allheilmittel, und es gibt Fälle, in denen Sprudeln unsere Bedürfnisse nicht erfüllen kann. In diesem Artikel werden einige Situationen erläutert, in denen Sprudeln nicht möglich ist, und spezifische Codebeispiele bereitgestellt.

1. Blasenbildung verhindern
Normalerweise verwenden wir die Methode Event.stopPropagation(), um die Blasenbildung des Ereignisses zu verhindern. Allerdings führt die Verhinderung der Blasenbildung manchmal nicht zum gewünschten Effekt. Event.stopPropagation()方法来阻止事件的冒泡。然而,有些时候阻止冒泡并不能达到我们想要的效果。

例如,假设我们有一个父元素和一个子元素,当点击子元素时,我们希望子元素的事件处理函数执行完后再执行父元素的事件处理函数。我们可能会尝试在子元素的事件处理函数中使用event.stopPropagation()

Angenommen, wir haben ein übergeordnetes Element und ein untergeordnetes Element. Wenn auf das untergeordnete Element geklickt wird, soll die Ereignishandlerfunktion des untergeordneten Elements ausgeführt werden, bevor die Ereignishandlerfunktion des übergeordneten Elements ausgeführt wird. Wir können versuchen, event.stopPropagation() im Event-Handler des untergeordneten Elements zu verwenden, um Blasenbildung zu verhindern:

<div id="parent">
  <div id="child"></div>
</div>

<script>
document.getElementById('child').addEventListener('click', function(event) {
  event.stopPropagation();
  console.log('子元素点击事件');
});

document.getElementById('parent').addEventListener('click', function() {
  console.log('父元素点击事件');
});
</script>
Nach dem Login kopieren

Der obige Code kann jedoch unsere Anforderungen nicht erfüllen. Durch Klicken auf das untergeordnete Element wird nur „Ausführen“ ausgeführt Die Click-Event-Handler-Funktion des untergeordneten Elements wird ausgeführt, die Click-Event-Handler-Funktion des übergeordneten Elements wird jedoch nicht ausgeführt. Dies liegt daran, dass durch das Verhindern der Blasenbildung nur verhindert wird, dass das Ereignis an das übergeordnete Element übergeben wird, es jedoch nicht dazu führt, dass der Ereignishandler des übergeordneten Elements ausgeführt wird, nachdem der Ereignishandler des untergeordneten Elements ausgeführt wurde.


2. Ereignisdelegation

Die Ereignisdelegation verwendet das Prinzip der Ereignissprudelung, um das Ereignis an das übergeordnete Element zu binden und die entsprechende Verarbeitungsfunktion durch Beurteilung der Ereignisquelle auszulösen. Allerdings gibt es manchmal Einschränkungen bei der Verwendung der Ereignisdelegierung.

Angenommen, wir haben ein ul-Element, das mehrere li-Elemente enthält. Wir hoffen, dass der Textinhalt des Elements ausgegeben wird, wenn auf ein beliebiges li-Element geklickt wird. Wir können versuchen, die Ereignisdelegation zu verwenden, um Folgendes zu erreichen:

<ul id="list">
  <li>1</li>
  <li>2</li>
  <li>3</li>
</ul>

<script>
document.getElementById('list').addEventListener('click', function(event) {
  if (event.target.tagName.toLowerCase() === 'li') {
    console.log(event.target.textContent);
  }
});
</script>
Nach dem Login kopieren

Der obige Code kann unsere Anforderungen erfüllen. Nach dem Klicken auf ein beliebiges li-Element wird der Textinhalt des Elements ausgegeben. Wenn wir jedoch ein a-Tag zum li-Element hinzufügen und das Bubbling verhindert wird, wenn auf das a-Tag geklickt wird, funktioniert die Ereignisdelegierung nicht ordnungsgemäß:

<ul id="list">
  <li>1 <a href="#" onclick="event.stopPropagation();">阻止冒泡</a></li>
  <li>2</li>
  <li>3</li>
</ul>

<script>
document.getElementById('list').addEventListener('click', function(event) {
  if (event.target.tagName.toLowerCase() === 'li') {
    console.log(event.target.textContent);
  }
});
</script>
Nach dem Login kopieren

Wenn im obigen Code auf den Link „Bubbling verhindern“ geklickt wird, Die Ereignisdelegierung schlägt fehl und es wird nichts ausgegeben. Dies liegt daran, dass durch die Verhinderung der Blasenbildung verhindert wird, dass Ereignisse zum ul-Element gelangen, sodass der Ereignisdelegierte die entsprechende Ereignisquelle nicht erkennen kann.


3. Asynchrone Ereignisverarbeitung

In einigen Fällen müssen wir Ereignisse möglicherweise asynchron verarbeiten, z. B. um Netzwerkanfragen zu stellen oder andere zeitaufwändige Vorgänge durchzuführen. Der Bubbling-Mechanismus kann jedoch die Anforderungen der asynchronen Ereignisverarbeitung nicht direkt erfüllen.

Angenommen, wir haben ein Schaltflächenelement. Wenn auf die Schaltfläche geklickt wird, müssen wir eine asynchrone Anfrage senden, um die Daten abzurufen, und dann die Seite basierend auf den Daten aktualisieren. Wir versuchen möglicherweise, asynchrone Vorgänge im Click-Event-Handler der Schaltfläche auszuführen:

<button id="btn">点击</button>

<script>
document.getElementById('btn').addEventListener('click', function() {
  setTimeout(function() {
    console.log('异步操作完成');
  }, 1000);
});
</script>
Nach dem Login kopieren

Der obige Code gibt eine Sekunde nach dem Klicken auf die Schaltfläche „Asynchroner Vorgang abgeschlossen“ aus. Wenn wir jedoch einen Click-Event-Handler für das übergeordnete Element der Schaltfläche haben und den Event-Handler nach Abschluss des asynchronen Vorgangs ausführen möchten, kann der Bubbling-Mechanismus diese Anforderung nicht erfüllen.

Zusammenfassend lässt sich sagen, dass Bubbling zwar ein sehr verbreiteter und leistungsstarker Mechanismus in der Front-End-Entwicklung ist, in einigen Fällen jedoch auch einige Einschränkungen aufweist. In diesen Fällen müssen wir andere Lösungen finden, um unseren Bedürfnissen gerecht zu werden. 🎜

Das obige ist der detaillierte Inhalt vonEinschränkungen von Bubbling-Events: Wann kann Bubbling nicht implementiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ereignis-ID 4660: Objekt gelöscht [Fix] Ereignis-ID 4660: Objekt gelöscht [Fix] Jul 03, 2023 am 08:13 AM

Einige unserer Leser sind auf das Ereignis ID4660 gestoßen. Sie sind sich oft nicht sicher, was sie tun sollen, deshalb erklären wir es in diesem Leitfaden. Die Ereignis-ID 4660 wird normalerweise protokolliert, wenn ein Objekt gelöscht wird. Daher werden wir auch einige praktische Möglichkeiten zur Behebung des Problems auf Ihrem Computer untersuchen. Was ist Ereignis-ID4660? Die Ereignis-ID 4660 bezieht sich auf Objekte in Active Directory und wird durch einen der folgenden Faktoren ausgelöst: Objektlöschung – Ein Sicherheitsereignis mit der Ereignis-ID 4660 wird protokolliert, wenn ein Objekt aus Active Directory gelöscht wird. Manuelle Änderungen – Die Ereignis-ID 4660 kann generiert werden, wenn ein Benutzer oder Administrator die Berechtigungen eines Objekts manuell ändert. Dies kann passieren, wenn Sie Berechtigungseinstellungen ändern, Zugriffsebenen ändern oder Personen oder Gruppen hinzufügen oder entfernen

Wie entferne ich Kommentarbeschränkungen für ein Videokonto? Wie hoch ist die Wortbeschränkung für Kommentare zu einem Videokonto? Wie entferne ich Kommentarbeschränkungen für ein Videokonto? Wie hoch ist die Wortbeschränkung für Kommentare zu einem Videokonto? Mar 22, 2024 pm 02:11 PM

Mit der Beliebtheit von Videokonten in sozialen Medien beginnen immer mehr Menschen, Videokonten zu nutzen, um ihr tägliches Leben, ihre Erkenntnisse und Geschichten zu teilen. Bei manchen Benutzern kann es jedoch vorkommen, dass die Kommentare eingeschränkt sind, was zu Verwirrung und Unzufriedenheit führen kann. 1. Wie entferne ich Kommentarbeschränkungen für Videokonten? Um die Einschränkung beim Kommentieren eines Videokontos aufzuheben, müssen Sie zunächst sicherstellen, dass das Konto ordnungsgemäß registriert wurde und die Authentifizierung mit echtem Namen abgeschlossen ist. Für Videokonten gelten Anforderungen für Kommentare. Nur Konten, die die Authentifizierung mit echtem Namen abgeschlossen haben, können Kommentarbeschränkungen aufheben. Wenn es Auffälligkeiten im Konto gibt, müssen diese Probleme behoben werden, bevor die Kommentarbeschränkungen aufgehoben werden können. 2. Halten Sie die Community-Standards des Videokontos ein. Für Videokonten gelten bestimmte Standards für Kommentarinhalte. Wenn der Kommentar illegale Inhalte enthält, wird Ihnen das Sprechen untersagt. Um die Kommentarbeschränkungen aufzuheben, müssen Sie sich an die Community des Videokontos halten

Erhalten Sie bevorstehende Kalenderereignisse auf Ihrem iPhone-Sperrbildschirm Erhalten Sie bevorstehende Kalenderereignisse auf Ihrem iPhone-Sperrbildschirm Dec 01, 2023 pm 02:21 PM

Auf iPhones mit iOS 16 oder höher können Sie bevorstehende Kalenderereignisse direkt auf dem Sperrbildschirm anzeigen. Lesen Sie weiter, um herauszufinden, wie es geht. Aufgrund von Komplikationen auf dem Zifferblatt sind viele Apple Watch-Benutzer daran gewöhnt, einen Blick auf ihr Handgelenk werfen zu können, um das nächste bevorstehende Kalenderereignis zu sehen. Mit der Einführung von iOS 16 und Sperrbildschirm-Widgets können Sie dieselben Kalenderereignisinformationen direkt auf Ihrem iPhone anzeigen, ohne das Gerät überhaupt entsperren zu müssen. Das Widget „Kalender-Sperrbildschirm“ gibt es in zwei Varianten, sodass Sie die Zeit des nächsten bevorstehenden Ereignisses verfolgen oder ein größeres Widget verwenden können, das den Namen des Ereignisses und seine Zeit anzeigt. Um mit dem Hinzufügen von Widgets zu beginnen, entsperren Sie Ihr iPhone mit Face ID oder Touch ID und halten Sie es gedrückt

So richten Sie ein CentOS-System ein, um Benutzeränderungen auf Systemprotokolle zu beschränken So richten Sie ein CentOS-System ein, um Benutzeränderungen auf Systemprotokolle zu beschränken Jul 05, 2023 pm 03:43 PM

So richten Sie das CentOS-System ein, um zu verhindern, dass Benutzer das Systemprotokoll ändern. Im CentOS-System ist das Systemprotokoll eine sehr wichtige Informationsquelle. Es zeichnet den Betriebsstatus, Fehlermeldungen, Warnungen usw. auf. Um die Stabilität und Sicherheit des Systems zu schützen, sollten wir Benutzer daran hindern, Systemprotokolle zu ändern. In diesem Artikel wird erläutert, wie Sie das CentOS-System so einrichten, dass die Änderungsberechtigungen des Systemprotokolls eingeschränkt werden. 1. Erstellen Sie Benutzergruppen und Benutzer. Zuerst müssen wir eine Benutzergruppe erstellen, die speziell für die Verwaltung von Systemprotokollen verantwortlich ist, und eine Benutzergruppe für die Verwaltung von Systemprotokollen.

Was ist in JavaScript der Zweck des „oninput'-Ereignisses? Was ist in JavaScript der Zweck des „oninput'-Ereignisses? Aug 26, 2023 pm 03:17 PM

Wenn dem Eingabefeld ein Wert hinzugefügt wird, tritt das oninput-Ereignis auf. Sie können versuchen, den folgenden Code auszuführen, um zu verstehen, wie Oninput-Ereignisse in JavaScript implementiert werden – Beispiel<!DOCTYPEhtml><html> <body> <p>Writebelow:</p> <inputtype="text&quot

Wie implementiert man Kalenderfunktionen und Ereigniserinnerungen in PHP-Projekten? Wie implementiert man Kalenderfunktionen und Ereigniserinnerungen in PHP-Projekten? Nov 02, 2023 pm 12:48 PM

Wie implementiert man Kalenderfunktionen und Ereigniserinnerungen in PHP-Projekten? Kalenderfunktionen und Terminerinnerungen gehören zu den häufigsten Anforderungen bei der Entwicklung von Webanwendungen. Ob persönliche Terminverwaltung, Teamzusammenarbeit oder Online-Veranstaltungsplanung – die Kalenderfunktion ermöglicht eine bequeme Zeitverwaltung und Transaktionsplanung. Die Implementierung von Kalenderfunktionen und Ereigniserinnerungen in PHP-Projekten kann durch die folgenden Schritte abgeschlossen werden. Datenbankdesign Zunächst müssen Sie eine Datenbanktabelle entwerfen, um Informationen zu Kalenderereignissen zu speichern. Ein einfaches Design könnte die folgenden Felder enthalten: id: eindeutig für das Ereignis

Wie verwende ich JavaScript, um Bilder zu ziehen und zu zoomen und sie gleichzeitig auf den Container zu beschränken? Wie verwende ich JavaScript, um Bilder zu ziehen und zu zoomen und sie gleichzeitig auf den Container zu beschränken? Oct 20, 2023 pm 04:19 PM

Wie implementiert JavaScript das Ziehen und Zoomen von Bildern und beschränkt sie gleichzeitig auf den Container? Bei der Webentwicklung müssen wir häufig Bilder ziehen und zoomen. In diesem Artikel wird erläutert, wie Sie mithilfe von JavaScript das Ziehen und Zoomen von Bildern implementieren und Vorgänge innerhalb des Containers einschränken. 1. Ziehen Sie das Bild. Um das Bild zu ziehen, können wir Mausereignisse verwenden, um die Mausposition zu verfolgen und das Bild entsprechend zu verschieben. Das Folgende ist ein Beispielcode: // Holen Sie sich das Bildelement varimage

So implementieren Sie die Änderungsereignisbindung ausgewählter Elemente in jQuery So implementieren Sie die Änderungsereignisbindung ausgewählter Elemente in jQuery Feb 23, 2024 pm 01:12 PM

jQuery ist eine beliebte JavaScript-Bibliothek, die zur Vereinfachung der DOM-Manipulation, Ereignisbehandlung, Animationseffekte usw. verwendet werden kann. Bei der Webentwicklung stoßen wir häufig auf Situationen, in denen wir die Ereignisbindung für ausgewählte Elemente ändern müssen. In diesem Artikel wird erläutert, wie Sie mit jQuery ausgewählte Elementänderungsereignisse binden, und es werden spezifische Codebeispiele bereitgestellt. Zuerst müssen wir ein Dropdown-Menü mit Optionen erstellen, die Beschriftungen verwenden:

See all articles