Wenn unsere Ereignisfunktion ausgelöst wird, empfängt die Ereignisfunktion tatsächlich ein Ereignisobjekt.
Wenn wir die Methode event.stopPropagation() in unserer Event-Funktion ausführen, endet das Sprudeln des Events hier.
Nicht alle Arten von Ereignissen unterstützen das Ereignis-Bubbling.
Event-Bubbling löst nur Event-Funktionen desselben Typs aus.
Es gibt zwei Möglichkeiten, Bubbling-Ereignisse zu verhindern: eine ist eine Eigenschaft und die andere ist eine Methode.
legt fest oder gibt zurück, ob das Ereignis an die obere Ebene weitergegeben werden soll.
Syntax:
event.cancelBubble = true;
verhindert, dass sich das Ereignis im Ereignisstrom weiter ausbreitet.
Syntax:
event.stopPropagation();
Beispiel: Binden Sie Klickantwortfunktionen an drei Objekte, die gegenseitig über- und untergeordnet sind.
window.onload = function(){ var span = document.getElementById("sp"); span.onclick = function(){ alarm('span tag'); } var box = document.getElementById('box3'); box3.onclick = function(){ alarm('box3'); } var body = document.body; body.onclick = function(){ alarm('body'); }}
Blasenbildung für Box verhindern:
window.onload = function(){ var span = document.getElementById("sp"); span.onclick = function(){ alarm('span tag'); } var box = document.getElementById('box3'); box3.onclick = Funktion(Ereignis){ alarm('box3'); event.stopPropagation(); } var body = document.body; body.onclick = function(){ alarm('body'); }}
Wenn wir eine Reihe von Unter-Tags mit denselben Ereignissen haben, können wir ihnen Ereignisse hinzufügen, indem wir die Unter-Tags durchlaufen. Wenn jedoch ein neues Unter-Tag-Element hinzugefügt wird, müssen wir das neue Unter-Tag erneut binden Element, andernfalls ist es ungültig.
bindet das Ereignis an das Vorfahrenelement , sodass, wenn das Ereignis auf dem untergeordneten Element ausgelöst wird, es zum Vorfahrenelement hochsteigt und das Ereignis über das Antwortereignis des Vorfahrenelements verarbeitet wird. Mithilfe von Bubbling und Delegation können Sie die Anzahl der Ereignisbindungen reduzieren und die Programmleistung verbessern.
, egal auf welches Element wir innerhalb des Vorgängerelements klicken. Wir hoffen nur, dass das Ereignis ausgelöst wird, wenn wir auf ein Element innerhalb des Vorgängerelements klicken Zu diesem Zeitpunkt müssen wir eine Beurteilungsbedingung angeben, ob es sich um das Element handelt, das das Ereignis auslösen soll.
gibt das Element zurück, das das Ereignis ausgelöst hat.
Syntax:
event.taget;
window.onload = function(){ var ul = document.getElementById('ul1'); ul.onclick = Funktion(Ereignis){ if(event.target.className == 'abq'){ alarm('Ereignis ausgelöst!!') } } //Hyperlink hinzufügen document.getElementById('bt1').onclick = function(){ var li = document.createElement('li'); li.innerHTML = "<a href = 'javascript:;' class='abq'>Neues Tag</a>"; ul.appendChild(li); } }
Mit dieser Methode können Sie mehrere identische Ereignisantwortfunktionen an dasselbe Element binden.
. Um dasselbe Ereignis gleichzeitig an ein Element zu binden, definieren Sie mehrere Antwortfunktionen, sodass beim Auslösen des Ereignisses die Antwortfunktionen in der Reihenfolge ausgeführt werden, in der die Funktionen gebunden sind!
window.onload = function(){ var bt = document.getElementById('bt1'); bt.addEventListener('click',function(){ Alert('Der erste Klick auf die entsprechende Funktion wurde ausgelöst!') },FALSCH); bt.addEventListener('click',function(){ Alert('Der zweite Klick der entsprechenden Funktion wurde ausgelöst!') },FALSCH); bt.addEventListener('click',function(){ Alert('Der dritte Klick hat die entsprechende Funktion ausgelöst!') }, false);}
Die Antwortfunktion wird während der Sprudelphase ausgeführt. Der standardmäßige dritte Parameter ist false
window.onload = function(){ var box1 = document.getElementById('box1'); var box2 = document.getElementById('box2'); var box3 = document.getElementById('box3'); box1.addEventListener('click',function(){ alarm('box1'); },FALSCH); box2.addEventListener('click',function(){ alarm('box2'); },FALSCH); box3.addEventListener('click',function(){ alarm('box3'); },FALSCH); }
Wenn Sie das Ereignis während der Erfassungsphase auslösen möchten, können Sie den dritten Parameter von addEventListener() auf true setzen!
window.onload = function(){ var box1 = document.getElementById('box1'); var box2 = document.getElementById('box2'); var box3 = document.getElementById('box3'); box1.addEventListener('click',function(){ alarm('box1'); },WAHR); box2.addEventListener('click',function(){ alarm('box2'); },WAHR); box3.addEventListener('click',function(){ alarm('box3'); },WAHR); }