事件委托是利用事件冒泡机制将监听器绑定在父元素上以统一管理子元素事件的技术,可减少内存占用、避免重复绑定、提升性能,适用于列表、表格等动态内容场景,但focus/blur等不冒泡事件不可用。
事件委托是一种利用事件冒泡机制,将事件监听器绑定在父元素上,而不是为每个子元素单独绑定,从而实现对动态添加或大量子元素的统一事件管理的技术。它能显著减少内存占用和 DOM 操作,提升页面性能。
当用户触发子元素上的事件(如点击),该事件会沿着 DOM 树逐级向上传播到父元素。借助这一特性,我们只需在父容器上监听一次事件,再通过 event.target 判断实际被点击的是哪个子元素,从而执行对应逻辑。

比如一个有 100 个 的菜单,传统做法要绑定 100 次 click;用事件委托只需绑定 1 次到 上:
const ul = document.getElementById('menu');
ul.addEventListener('click', function(e) {
if (e.target.tagName === 'LI') {
console.log('点击了:', e.target.textContent);
}
});
事件委托不是万能的,需注意适用边界: