Heim > Web-Frontend > js-Tutorial > Praktische Tipps und Fallbeispiele, um zu verhindern, dass es zu Zwischenfällen kommt

Praktische Tipps und Fallbeispiele, um zu verhindern, dass es zu Zwischenfällen kommt

王林
Freigeben: 2024-01-13 15:28:16
Original
1392 Leute haben es durchsucht

Praktische Tipps und Fallbeispiele, um zu verhindern, dass es zu Zwischenfällen kommt

Praktische Tipps und Fallanalyse zur Verhinderung von Event-Bubblings

Event-Bubbling bedeutet, dass im DOM-Baum ein Ereignis zum übergeordneten Element bis zum Wurzelknoten sprudelt. Dieser Blasenmechanismus kann manchmal zu unerwarteten Problemen und Fehlern führen. Um zu verhindern, dass dieses Problem auftritt, müssen wir lernen, einige praktische Techniken anzuwenden, um zu verhindern, dass Ereignisse in die Luft sprudeln. In diesem Artikel werden einige häufig verwendete Techniken zur Verhinderung von Ereignisblasen vorgestellt, anhand von Fällen analysiert und spezifische Codebeispiele bereitgestellt.

1. Verwenden Sie die stopPropagation-Methode des Ereignisobjekts.

In JavaScript stellt das Ereignisobjekt (Ereignis) eine stopPropagation-Methode bereit, mit der verhindert werden kann, dass das Ereignis weiter sprudelt. Die Verwendung dieser Methode ist sehr einfach. Rufen Sie einfach event.stopPropagation() in der Ereignisverarbeitungsfunktion auf.

Zum Beispiel gibt es eine Schaltfläche und ein übergeordnetes Element eines Klickereignisses auf einer Seite. Wenn auf die Schaltfläche geklickt wird, verhindern Sie, dass das Klickereignis zum übergeordneten Element aufsteigt:

<div id="parent">
  <button id="btn">点击按钮</button>
</div>

<script>
  const parent = document.getElementById('parent');
  const btn = document.getElementById('btn');

  btn.addEventListener('click', function(event) {
    event.stopPropagation();
    console.log('点击了按钮');
  });

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

Im obigen Code nach der Schaltfläche angeklickt wird, lautet die Ausgabe in der Konsole nur „auf die Schaltfläche geklickt“, aber „auf das übergeordnete Element geklickt“ wurde nicht ausgelöst, was darauf hinweist, dass das Sprudeln des Ereignisses durch Aufrufen der Methode „stopPropagation“ erfolgreich verhindert wurde.

2. Verwenden Sie das cancelBubble-Attribut des Ereignisobjekts

Zusätzlich zur Verwendung der stopPropagation-Methode stellt das Ereignisobjekt auch ein cancelBubble-Attribut bereit, bei dem es sich um einen booleschen Wert handelt. Sie können verhindern, dass Ereignisse sprudeln, indem Sie die Eigenschaft cancelBubble auf true setzen.

Auf einer Seite gibt es beispielsweise einen Link und ein Klickereignis als übergeordnetes Element. Wenn auf den Link geklickt wird, verhindern Sie, dass das Klickereignis zum übergeordneten Element aufsteigt:

<div id="parent">
  <a href="#" id="link">点击链接</a>
</div>

<script>
  const parent = document.getElementById('parent');
  const link = document.getElementById('link');

  link.addEventListener('click', function(event) {
    event.cancelBubble = true;
    console.log('点击了链接');
  });

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

Im obigen Code nach dem Klicken auf Link, die Ausgabe in der Konsole lautet nur „Auf den Link geklickt“, aber „Auf das übergeordnete Element geklickt“ wurde nicht ausgelöst, was darauf hinweist, dass das Sprudeln des Ereignisses erfolgreich verhindert wurde, indem das Attribut „cancelBubble“ auf „true“ gesetzt wurde.

3. Fallanalyse

Jetzt verwenden wir einen konkreten Fall, um die Szenarien und Techniken zur Verhinderung von Ereignisblasen weiter zu analysieren.

Angenommen, eine Seite enthält mehrere verschachtelte div-Elemente und jedes div-Element verfügt über ein eigenes Klickereignis. Was wir nun erreichen wollen, ist, dass beim Klicken auf das innerste Div nur das Klickereignis des Div ausgelöst wird, nicht jedoch das Klickereignis seines übergeordneten Elements.

<div id="outer" style="background: yellow;">
  <div id="middle" style="background: blue;">
    <div id="inner" style="background: red;"></div>
  </div>
</div>

<script>
  const outer = document.getElementById('outer');
  const middle = document.getElementById('middle');
  const inner = document.getElementById('inner');

  outer.addEventListener('click', function() {
    console.log('点击了外层div');
  });

  middle.addEventListener('click', function() {
    console.log('点击了中间div');
  });

  inner.addEventListener('click', function(event) {
    event.stopPropagation();
    console.log('点击了最内层div');
  });
</script>
Nach dem Login kopieren

Wenn wir im obigen Code auf das innerste Div klicken, lautet die Konsolenausgabe nur „das innerste Div wurde angeklickt“, aber „das mittlere Div wurde angeklickt“ und „das äußere Div wurde angeklickt“, was darauf hinweist Das Sprudeln des Ereignisses wurde durch den Aufruf der Methode „stopPropagation“ erfolgreich verhindert, wodurch unsere Anforderungen erfüllt wurden.

Zusammenfassend lässt sich sagen, dass Sie durch die Verwendung der stopPropagation-Methode oder der cancelBubble-Eigenschaft des Ereignisobjekts das Sprudeln von Ereignissen leicht verhindern können. In der tatsächlichen Entwicklung ist es wichtig, geeignete Techniken auszuwählen, um das Sprudeln von Ereignissen entsprechend den spezifischen Anforderungen zu verhindern. Wir hoffen, dass Ihnen dieser Artikel dabei hilft, Techniken zur Verhinderung von Ereignisblasen besser anzuwenden.

Das obige ist der detaillierte Inhalt vonPraktische Tipps und Fallbeispiele, um zu verhindern, dass es zu Zwischenfällen kommt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage