事件委托是利用了浏览器事件冒泡的机制。因为事件在冒泡过程中会上传到父节点,并且父节点可以通过事件对象获取到目标节点,因此可以把子节点的监听函数定义在父节点上,由父节点的监听函数统一处理多个子元素的事件,这种方式称为事件代理。
<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>
优点
- 不必要为每一个子元素都绑定一个监听事件,这样减少了内存上的消耗。
- 可以实现事件的动态绑定,比如说新增了一个子节点,我们并不需要单独地为它添加一个监听事件,它所发生的事件会交给父元素中的监听函数来处理。