Ich versuche, das Äquivalent zu erreichen:Bind Ereignis auf mehrere Elemente ohne Looping (Vanille JS)
$('div').on('click', function() {
// Do something
});
Aber ohne jQuery. Mein erster Gedanke war, eine for
Schleife zu verwenden, um über alle Elemente in der Menge zu iterieren, aber meine Vermutung ist, dass es einen besseren Weg gibt, dies zu erreichen, ohne eine Schleife zu verwenden (irgendeine native Methode?).
var elems = document.getElementsByTagName('div');
function someEvent() { // Generic function to test against
alert('event fired');
}
for (var i=0, j = elems.length; i < j; i += 1) {
elems[i].addEventListener("click", someEvent);
}
Gibt es einen eleganteren Weg, dies ohne die Einbeziehung einer Bibliothek zu tun?
Ich denke, es ist entweder das oder Bindung des Ereignisses an ein Elternelement, das alle gewünschten Elemente (z. B. Körper) enthält und die Eigenschaft "target" im Ereignis verwendet. – JCOC611
Sie müssen Schleifen oder Delegieren, aber natürlich können Sie Ihre eigene Wrapper-Funktion schreiben, so dass Sie nicht jedes Mal Loop-Code in Ihren Skripten wiederholen müssen, wenn Sie dies tun müssen. Beachten Sie, dass die Methode '.on()' von jQuery intern eine Schleife ausführt. – nnnnnn