Heim  >  Artikel  >  Web-Frontend  >  Leitfaden zum Parsen von JS-Bubbling-Ereignissen: Pflichtlektüre für Anfänger

Leitfaden zum Parsen von JS-Bubbling-Ereignissen: Pflichtlektüre für Anfänger

王林
王林Original
2024-01-13 10:21:061300Durchsuche

Leitfaden zum Parsen von JS-Bubbling-Ereignissen: Pflichtlektüre für Anfänger

Muss für Anfänger gelesen werden: Einführung in JS-Bubbling-Events und Analyse von Anwendungsszenarien

Einführung:
In der Webentwicklung ist JavaScript (JS) eine sehr wichtige Programmiersprache. Nachdem Sie die grundlegende Syntax und Funktionsweise von JS beherrschen, ist das Verständnis des Ereignismechanismus von JS der Schlüssel zur weiteren Verbesserung Ihrer Fähigkeiten. Unter diesen sind Blasenereignisse ein wichtiges Konzept im JS-Ereignismechanismus. In diesem Artikel werden die Konzepte, Prinzipien und praktischen Anwendungsszenarien von JS-Bubbling-Ereignissen ausführlich vorgestellt und spezifische Codebeispiele bereitgestellt, um Anfängern zu helfen, diese besser zu verstehen und zu beherrschen.

1. Konzept:
Bubbling-Ereignis bedeutet, dass, wenn ein Element ein Ereignis auslöst, das Ereignis nacheinander im übergeordneten Element ausgelöst wird, bis es das äußerste Vorgängerelement auslöst. Dieser Vorgang ähnelt einer von unten aufsteigenden Blase und wird daher als Blasenereignis bezeichnet.

2. Prinzip:
Das Prinzip der Bubbling-Ereignisse basiert auf der DOM-Baumstruktur, dem Dokumentobjektmodell. In einer Webseite können alle Elemente (einschließlich HTML-Tags und von JS erstellter Elemente) als Knoten eines DOM-Baums betrachtet werden. Wenn ein Ereignis für ein Element auftritt, löst die JS-Engine nacheinander denselben Ereignistyp gemäß der Struktur des DOM-Baums aus, dh löst dasselbe Ereignis für das übergeordnete Element bis zum äußersten Vorfahrenelement aus.

3. Codebeispiel 1: Grundlegende Verwendung von Bubbling-Ereignissen
Das Folgende ist ein einfacher HTML-Codeausschnitt, der die grundlegende Verwendung von Bubbling-Ereignissen demonstriert:

<!DOCTYPE html>
<html>
<head>
  <title>冒泡事件示例</title>
</head>
<body>
  <div id="outer">
    <div id="inner">
      <button id="btn">点击触发冒泡事件</button>
    </div>
  </div>

  <script>
    // 选择DOM元素
    const outer = document.querySelector('#outer');
    const inner = document.querySelector('#inner');
    const btn = document.querySelector('#btn');

    // 添加冒泡事件监听
    outer.addEventListener('click', function() {
      console.log('父级元素outer被点击');
    });

    inner.addEventListener('click', function() {
      console.log('子级元素inner被点击');
    });

    btn.addEventListener('click', function() {
      console.log('按钮被点击');
    });
  </script>
</body>
</html>

Im obigen Code geben wir das übergeordnete Element außen, das untergeordnete Element inner und an Das Schaltflächenelement btn fügt einen Klickereignis-Listener hinzu. Wenn wir auf die Schaltfläche klicken, werden die folgenden Informationen auf der Konsole ausgegeben:

按钮被点击
子级元素inner被点击
父级元素outer被点击

Dies liegt daran, dass das Klickereignis des Schaltflächenelements zum inneren untergeordneten Element und zum äußeren übergeordneten Element sprudelt und die entsprechende Ereignisrückruffunktion auslöst.

4. Codebeispiel 2: Anwendungsszenarien von Bubbling-Ereignissen
Die Anwendungsszenarien von Bubbling-Ereignissen sind sehr vielfältig. Im Folgenden nehmen wir die Funktion zum Löschen von Warenkorbartikeln als Beispiel, um die praktische Anwendung von Bubbling-Ereignissen zu demonstrieren.

<!DOCTYPE html>
<html>
<head>
  <title>冒泡事件应用场景示例</title>
  <style>
    .item {
      margin-bottom: 10px;
      padding: 5px;
      border: 1px solid #ccc;
    }
    .delete-btn {
      float: right;
      cursor: pointer;
    }
  </style>
</head>
<body>
  <div id="cart">
    <div class="item">
      商品1
      <span class="delete-btn">删除</span>
    </div>
    <div class="item">
      商品2
      <span class="delete-btn">删除</span>
    </div>
    <div class="item">
      商品3
      <span class="delete-btn">删除</span>
    </div>
  </div>

  <script>
    // 选择DOM元素
    const cart = document.querySelector('#cart');

    // 添加冒泡事件监听
    cart.addEventListener('click', function(event) {
      const target = event.target;
      if (target.classList.contains('delete-btn')) {
        const item = target.parentNode;
        item.remove();
        console.log('删除成功');
      }
    });
  </script>
</body>
</html>

Im obigen Code haben wir einen Klickereignis-Listener für die Löschschaltfläche jedes Produktelements hinzugefügt. Beim Anklicken des Löschen-Buttons wird in der Konsole die Meldung „Löschen erfolgreich“ ausgegeben und das entsprechende Produktelement aus dem Warenkorb entfernt. Dies liegt daran, dass beim Klicken auf die Schaltfläche „Löschen“ das Blasenereignis die Funktion zum Abhören von Klickereignissen im Warenkorb des übergeordneten Elements auslöst. Durch Bestimmen, ob es sich bei dem angeklickten Zielelement um eine Schaltfläche zum Löschen handelt, kann die spezifische Löschfunktion implementiert werden.

Zusammenfassung:
Bubble-Ereignisse sind ein wichtiges Konzept im JS-Ereignismechanismus und ein Teil, der in der Webentwicklung nicht ignoriert werden darf. Durch die detaillierte Einführung dieses Artikels in die Konzepte, Prinzipien und praktischen Anwendungsszenarien von Bubbling-Events glaube ich, dass Anfänger bereits ein vorläufiges Verständnis und eine Beherrschung von Bubbling-Events erlangt haben. Ich hoffe, dieser Artikel kann Anfängern helfen, Bubbling-Ereignisse besser zu verstehen und anzuwenden und ihre JS-Programmierkenntnisse zu verbessern.

Das obige ist der detaillierte Inhalt vonLeitfaden zum Parsen von JS-Bubbling-Ereignissen: Pflichtlektüre für Anfänger. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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