JavaScript操作DOM事件最常用addEventListener方法,支持多监听器与捕获阶段;事件委托通过父元素监听+event.target判断实现,适用于动态子元素,但focus/blur等不冒泡事件不可委托。
JavaScript操作DOM事件的核心是通过事件监听器绑定行为,而事件委托利用事件冒泡机制,把事件处理逻辑集中在父元素上,减少重复绑定、提升性能,也便于动态添加的子元素自动响应事件。
最常用的是addEventListener方法,支持多个监听器、可选捕获阶段,并且比直接写onclick属性更灵活安全:
click', handler)
事件委托的关键在于:**监听父容器,判断触发源(event.target),再执行对应逻辑**。适用于列表、菜单、表格等大量子元素场景:
事件委托不是万能的,有些情况不适用:
假设有一个动态生成的按钮列表:
只需绑定一次:
document.getElementById('btn-container').addEventListener('click', function(e) {
if (e.target.tagName === 'BUTTON') {
const id = e.target.dataset.id;
console.log('点击了ID为', id, '的按钮');
}
});
后续用JS插入新按钮,同样生效,无需额外绑定。