一、概念
事件委托,用白话来讲就是将事件监听交给自己的祖先元素进行处理。
二、原理
事件委托的实现是根据事件冒泡实现的,利用事件冒泡的特性。对于父元素使用事件监听,当父盒子里面的某个元素被触发时,向上冒泡,触发父元素的事件。利用 target
后去触发冒泡事件的元素。
<ul id="father">
<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>
</ul>
<script>
let domUl = document.querySelector('#father')
domUl.addEventListener('click', (e) => {
if (e.target.nodeName.toLowerCase() == 'li') {
console.log(e.target)
}
})
</script>
通过 target
下的 nodeName
属性判断。是否是我们需要监听的元素。
三、优点
- 可以节省大量内存
- 可以监听动态元素
注意:事件委托需要依赖事件冒泡,如果不支持事件冒泡的元素没办法使用事件委托。