如何将事件处理程序分配给JavaScript中的多个元素?
我知道如何使用jQuery,也知道如何使用事件委派。但是如何在纯JavaScript中实现这一点呢 例如,如何将事件处理程序分配给一组如何将事件处理程序分配给JavaScript中的多个元素?,javascript,javascript-events,event-handling,Javascript,Javascript Events,Event Handling,我知道如何使用jQuery,也知道如何使用事件委派。但是如何在纯JavaScript中实现这一点呢 例如,如何将事件处理程序分配给一组lis 我看到var li=document.queryselectoral('li')。返回一个类似的数组。您是否只是循环并分配处理程序?我觉得一定有更好的办法。如果不是,那么在类似数组的对象中循环的最佳方式是什么(类似数组的对象叫什么?)是的,您应该在集合中循环并分别分配处理程序。jQuery也在幕后完成这项工作 querySelectorAll返回一个类似数
li
s
我看到
var li=document.queryselectoral('li')代码>。返回一个类似的数组。您是否只是循环并分配处理程序?我觉得一定有更好的办法。如果不是,那么在类似数组的对象中循环的最佳方式是什么(类似数组的对象叫什么?)是的,您应该在集合中循环并分别分配处理程序。jQuery也在幕后完成这项工作
querySelectorAll
返回一个类似数组的对象
要在列表中循环,可以使用For
循环:
var list = document.querySelectorAll('li'),
l = list.length,
li;
for (var i = 0; i < l; i++) {
li = list.item(i);
// ...
}
你是怎么循环的forEach
不起作用。@AdamZerner:带有for
循环。“类似数组”表示对象具有长度和数字属性。好的,谢谢。我不确定键是什么,所以我害怕做一个for
循环,但键似乎是像数组一样的数字标记。这是一个严肃的问题吗?是的,当您有一个集合,并且希望对集合中的每个元素应用一些行为时,您可以迭代集合并对单个成员进行操作。没有更好的办法了。这正是jQuery所做的。@squint我想有一种方法可以做类似于li的事情。
。我还在学习编程,但事后看来,你说的很有道理。尽管如此,我认为对于学生来说,这是一个完全可以理解的问题。您可能应该使用委托,而不是在循环中手动添加大量事件。您只需将click(或其他)构建到UL而不是LI,并在处理程序中选中e.target而不是this。
[].forEach.call(document.querySelectorAll('li'), function(li) {
// ...
});