Heim > Web-Frontend > js-Tutorial > Wie kann ich Ereignis-Listener mehreren Objekten ohne Bereichskonflikte zuweisen?

Wie kann ich Ereignis-Listener mehreren Objekten ohne Bereichskonflikte zuweisen?

Patricia Arquette
Freigeben: 2024-11-20 17:30:11
Original
385 Leute haben es durchsucht

How to Assign Event Listeners to Multiple Objects Without Scope Conflicts?

Ereignis-Listener-Zuweisung mithilfe iterativer Funktionen

Wenn Sie eine Schleife verwenden, um Ereignis-Listener zu mehreren Objekten hinzuzufügen, kann es so aussehen, als würden alle Listener auf die referenzieren dasselbe Objekt, normalerweise das letzte in der Schleife. Dies liegt daran, wie JavaScript mit Variablenbereichen und Funktionsabschlüssen umgeht.

Um dieses Problem zu beheben, verwenden Sie den folgenden Ansatz:

// Autoloading function to add the listeners:
var elem = document.getElementsByClassName("triggerClass");

for (var i = 0; i < elem.length; i += 2) {
  (function () {
    var k = i + 1;
    var boxa = elem[i].parentNode.id;
    var boxb = elem[k].parentNode.id;

    elem[i].addEventListener("click", function() { makeItHappen(boxa, boxb); }, false);
    elem[k].addEventListener("click", function() { makeItHappen(boxb, boxa); }, false);
  }());
}
Nach dem Login kopieren

In diesem Code wird eine anonyme Funktion um das Innere gewickelt Umfang, wodurch für jede Iteration ein Abschluss erstellt wird. Durch die sofortige Ausführung der Funktion mit dem Operator „()“ verfügt jede Iteration über ihren eigenen privaten Bereich, wodurch sichergestellt wird, dass die darin enthaltenen Variablen und Funktionen nicht mit denen anderer Iterationen in Konflikt geraten.

Dieser Ansatz gewährt jedem Ereignis-Listener Zugriff auf die vorgesehenen Variablen, wodurch das Problem gelöst wird, dass alle Listener auf dasselbe Objekt abzielen.

Das obige ist der detaillierte Inhalt vonWie kann ich Ereignis-Listener mehreren Objekten ohne Bereichskonflikte zuweisen?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage