Heim  >  Artikel  >  Web-Frontend  >  Analysieren Sie den Mechanismus und die Verwendung von Event-Bubbling

Analysieren Sie den Mechanismus und die Verwendung von Event-Bubbling

WBOY
WBOYOriginal
2024-01-13 09:26:06954Durchsuche

Analysieren Sie den Mechanismus und die Verwendung von Event-Bubbling

Event-Bubbling ist ein Ereignisbereitstellungsmechanismus, der häufig in der Front-End-Entwicklung verwendet wird. In diesem Artikel werden wir die Prinzipien und Anwendungen des Event-Bubblings ausführlich erläutern und Codebeispiele bereitstellen, um den Lesern ein besseres Verständnis zu erleichtern.

1. Das Prinzip des Event-Bubblings
Event-Bubbling bedeutet, dass, wenn ein Ereignis auf einem Element ausgelöst wird, es Schritt für Schritt an die oberen Elemente bis zum Wurzelelement weitergegeben wird. Mit anderen Worten: Ereignisse werden beginnend mit dem spezifischsten Element weitergegeben und dann zu allgemeineren Elementen übergegangen.

Das Prinzip der Event-Bubbling lässt sich auf die folgenden Punkte zusammenfassen:

  1. Die Ausbreitung von Ereignissen erfolgt vom untergeordneten Element über das übergeordnete Element bis hin zum Wurzelelement.
  2. Die Ereignisse des untergeordneten Elements werden an sein übergeordnetes Element und dann an das eine Ebene darüber liegende übergeordnete Element bis zum Stammelement übergeben.
  3. Wenn während des Ereigniszustellungsprozesses die übergeordneten Elemente jeder Ebene an dieselben Ereignishandler gebunden sind, werden diese Ereignishandler aufgerufen.

2. Anwendung von Event-Bubbling

  1. Vereinfachte Event-Bindung: Durch die Verwendung des Event-Bubbling-Mechanismus können wir den Event-Handler an das übergeordnete Element binden und so die Notwendigkeit reduzieren, Ereignisse an mehrere untergeordnete Elemente zu binden. Dieser Ansatz kann die Wartbarkeit und Ausführungseffizienz des Codes verbessern.

Zum Beispiel haben wir ein übergeordnetes Element div, das mehrere Schaltflächen für untergeordnete Elemente und denselben Klickereignishandler für jede Schaltfläche enthält. Wenn wir Event-Bubbling verwenden, müssen wir ein Ereignis nur einmal an das übergeordnete Element div binden, wie unten gezeigt:

<div id="parentElement">
  <button>按钮1</button>
  <button>按钮2</button>
  <button>按钮3</button>
</div>

<script>
var parentElement = document.getElementById('parentElement');
parentElement.addEventListener('click', function(e) {
  console.log(e.target.innerHTML + '被点击了');
});
</script>

Im obigen Code binden wir einen Click-Event-Handler an das übergeordnete Element div. Wenn auf die Schaltfläche eines untergeordneten Elements geklickt wird, wird das Ereignis zum div des übergeordneten Elements weitergeleitet und löst den Ereignishandler des übergeordneten Elements aus. Durch Drucken des Zielattributs des Ereignisobjekts können wir die spezifische angeklickte Schaltfläche erhalten.

  1. Ereignisdelegation: Die Ereignisdelegation ist eine gängige Technologie, die den Ereignis-Bubbling-Mechanismus nutzt, um dynamisch hinzugefügte Elemente zu verarbeiten. Durch die Bindung von Event-Handlern an übergeordnete Elemente können entsprechende Ereignisse auf dynamisch hinzugefügten untergeordneten Elementen ausgelöst werden.

Zum Beispiel haben wir im vorherigen Beispiel dynamisch eine neue Schaltfläche hinzugefügt, wie unten gezeigt:

<div id="parentElement">
  <button>按钮1</button>
  <button>按钮2</button>
  <button>按钮3</button>
</div>

<script>
var parentElement = document.getElementById('parentElement');
parentElement.addEventListener('click', function(e) {
  if (e.target.tagName.toLowerCase() === 'button') {
    console.log(e.target.innerHTML + '被点击了');
  }
});

var newButton = document.createElement('button');
newButton.innerHTML = '新按钮';
parentElement.appendChild(newButton);
</script>

Im obigen Code haben wir einen Klickereignishandler an das übergeordnete Element div gebunden, indem wir das Ereignis beurteilt haben Ob das ausgelöste Ziel Element ist eine Schaltfläche zum Herausfiltern von Elementen, die nicht verarbeitet werden müssen. Auf diese Weise können wir Klickereignisse für dynamisch hinzugefügte Elemente verarbeiten, ohne für jedes neu hinzugefügte Element separate Ereignisse binden zu müssen.

  1. Ereignisweitergabe stoppen: Durch Aufrufen der stopPropagation()-Methode des Ereignisobjekts im Ereignishandler können Sie die weitere Zustellung des Ereignisses stoppen.

Zum Beispiel binden wir ein Klickereignis an die Schaltfläche des untergeordneten Elements und rufen die Methode stopPropagation() im Ereignishandler auf, wie unten gezeigt:

<div id="parentElement">
  <button>按钮1</button>
  <button>按钮2</button>
  <button>按钮3</button>
</div>

<script>
var buttons = document.getElementsByTagName('button');

for (var i = 0; i < buttons.length; i++) {
  buttons[i].addEventListener('click', function(e) {
    console.log(e.target.innerHTML + '被点击了');
    e.stopPropagation();
  });
}

var parentElement = document.getElementById('parentElement');
parentElement.addEventListener('click', function(e) {
  console.log('父元素被点击了');
});
</script>

Im obigen Code wird das Ereignis ausgelöst, wenn auf die Schaltfläche des untergeordneten Elements geklickt wird Der Click-Event-Handler des untergeordneten Elements selbst wird ausgelöst und ruft die stopPropagation()-Methode auf, um zu verhindern, dass das Ereignis weiterhin zugestellt wird. Daher wird der Click-Event-Handler des übergeordneten Elements nicht ausgelöst.

Zusammenfassung:
Event-Bubbling ist ein häufig verwendeter Ereignisbereitstellungsmechanismus in der Front-End-Entwicklung, der die Ereignisbindung vereinfachen, die Ereignisdelegation implementieren und die Ereignisbereitstellung steuern kann. Durch die richtige Nutzung von Event-Bubbling können wir die Wartbarkeit und Ausführungseffizienz des Codes verbessern.

Das obige ist der detaillierte Inhalt vonAnalysieren Sie den Mechanismus und die Verwendung von Event-Bubbling. 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