事件委托

68 阅读1分钟

事件委托是利用了浏览器事件冒泡的机制。因为事件在冒泡过程中会上传到父节点,并且父节点可以通过事件对象获取到目标节点,因此可以把子节点的监听函数定义在父节点上,由父节点的监听函数统一处理多个子元素的事件,这种方式称为事件代理。

<ul id="parent">
  <li>1</li>
  <li>2</li>
  <li>3</li>
  ...
  <li>999</li>
  <li>1000</li>
</ul>
<script>
  let parent = document.getElementById('parent');
  parent.addEventListener('click', (e) => {
    // 根据e.target进行处理
  })
</script>

优点

  • 不必要为每一个子元素都绑定一个监听事件,这样减少了内存上的消耗。
  • 可以实现事件的动态绑定,比如说新增了一个子节点,我们并不需要单独地为它添加一个监听事件,它所发生的事件会交给父元素中的监听函数来处理。