如何使用事件委托而不是将事件侦听器分别附加到每个项目?

鲁帕里

如何将此代码转换为事件委托?

这是HTML代码

<ul id="todo-app">
  <li class="item">Walk the dog</li>
  <li class="item">Pay bills</li>
  <li class="item">Make dinner</li>
  <li class="item">Code for one hour</li>
</ul>

JavaScript代码

document.addEventListener('DOMContentLoaded', function() {

  let app = document.getElementById('todo-app');
  let items = app.getElementsByClassName('item');

  // attach event listener to each item
  for (let item of items) {
    item.addEventListener('click', function() {
      alert('you clicked on item: ' + item.innerHTML);
    });
  }

});

上面的代码在技术上有效,问题在于,将事件侦听器分别附加到每个项目。使用上述代码应用程序可能会导致数百个事件侦听器,更有效的解决方案是将一个事件侦听器实际附加到整个容器,然后在实际单击每个项目时便能够访问它们。

那么,如何使用事件委托来制作此代码?

罗德里戈·费雷拉

您需要了解的所有知识才能在纯Js中实现您所需要的一切,这是在此事件委派中-David Walsh

您的情况是:

document.getElementById("todo-app").addEventListener("click",function(e) {
	// e.target was the clicked element
  if (e.target && e.target.matches("li.item")) {
    console.log("List item clicked!");
  }
});
<ul id="todo-app">
  <li class="item">Walk the dog</li>
  <li class="item">Pay bills</li>
  <li class="item">Make dinner</li>
  <li class="item">Code for one hour</li>
</ul>

希望能帮助到你!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 Adobe 扩展脚本将事件侦听器附加到应用程序项目中

如何使用事件委托收听不同的侦听器

如何在 ReactJS 中使用事件侦听器?

将异步侦听器附加到单击事件

将事件侦听器附加到UWP中的MotionAnimation

将事件侦听器附加到FOR循环内的对象

Hashchange事件侦听器在将事件处理程序附加到事件之前进行侦听

如何将'this'绑定到单击侦听器并使用事件-ES6

如何使用事件侦听器将类切换到单个列表项

使用addEventListener获取附加到节点的事件侦听器

如何/何时将事件侦听器附加到d3.js中?

如何将拖放事件侦听器附加到React组件

使用纯JavaScript,是否有简单的方法将事件侦听器附加到类?

使用纯JavaScript,是否有简单的方法将事件侦听器附加到类?

如何将事件侦听器添加到数组中的每个元素?

如何使用事件侦听器将新元素添加到对象数组并将其显示在html页面上(已编辑代码)

如何使用单个事件侦听器而不是每个按钮中的 onclick 事件来制作迷你计算器?

使用事件侦听器克隆引导程序元素

在 Angular 中使用事件侦听器操作类

未调用事件侦听器

如何将事件侦听器添加到ag网格的单元格内的元素(使用js或jquery,不是Angular,不是reactjs,不是vue)

如何使用 React 将事件侦听器“更改时”添加到输入元素?

如何在Lit-HTML中使用事件侦听器添加和删除类?

如何在不使用事件侦听器的情况下检查单击的元素?

使用事件侦听器时如何访问父容器上的属性?

如何将一个或多个变量附加到一个事件侦听器?

如何将事件侦听器附加到Dojo工具箱中动态添加的窗口小部件内容

将事件侦听器附加到整个html文档的最佳方法

JavaFX将事件侦听器附加到颜色为黑色的圆圈