Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将事件处理程序分配给JavaScript中的多个元素?_Javascript_Javascript Events_Event Handling - Fatal编程技术网

如何将事件处理程序分配给JavaScript中的多个元素?

如何将事件处理程序分配给JavaScript中的多个元素?,javascript,javascript-events,event-handling,Javascript,Javascript Events,Event Handling,我知道如何使用jQuery,也知道如何使用事件委派。但是如何在纯JavaScript中实现这一点呢 例如,如何将事件处理程序分配给一组lis 我看到var li=document.queryselectoral('li')。返回一个类似的数组。您是否只是循环并分配处理程序?我觉得一定有更好的办法。如果不是,那么在类似数组的对象中循环的最佳方式是什么(类似数组的对象叫什么?)是的,您应该在集合中循环并分别分配处理程序。jQuery也在幕后完成这项工作 querySelectorAll返回一个类似数

我知道如何使用jQuery,也知道如何使用事件委派。但是如何在纯JavaScript中实现这一点呢

例如,如何将事件处理程序分配给一组
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) {
    // ...
});