Я пытаюсь добиться эквивалент:Bind событие для нескольких элементов без зацикливания (ванильный JS)
$('div').on('click', function() {
// Do something
});
Но без JQuery. Моя первоначальная мысль состояла в том, чтобы использовать цикл for
для итерации по всем элементам в наборе, но я думаю, что есть лучший способ достичь этого, не используя цикл (какой-то собственный метод?).
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);
}
Есть ли более элегантный способ сделать это без включения библиотеки?
Я думаю, что это либо связано, либо привязывает событие к родительскому элементу, который содержит все нужные элементы (например, тело) и использует свойство target в событии. – JCOC611
Вам нужно выполнить цикл или делегировать, но, конечно же, вы можете написать свою собственную функцию-оболочку, чтобы вам не приходилось повторять код цикла по всем вашим скриптам каждый раз, когда вам нужно это делать. Обратите внимание, что метод '.on()' jQuery встроен внутри. – nnnnnn