什么是 JavaScript 中的事件冒泡和捕获?

javascriptfront end technologyobject oriented programming更新于 2025/11/21 10:20:17

事件冒泡是指当一个元素嵌套在第二个元素中,并且两个元素都为同一事件(例如单击)注册了侦听器时调用事件处理程序的顺序。使用冒泡时,事件首先由最内层元素捕获和处理,然后传播到外部元素。

使用捕获时,事件首先由最外层元素捕获并传播到内部元素。

让我们看看这两个示例。

对于以下两个示例,请创建以下 HTML −

示例

<div id='outer' style='background-color:red;display:inline-block;padding:50px;'>
   外部 Div
<div id='inner' style='background-color:yellow;display:inline-block;padding:50px;'>
   内部 Div
</div>
</div>

1. 事件冒泡

document.querySelector('#outer').addEventListener('click', e => {
   console.log('外部 div 被点击');
}, false);
document.querySelector('#inner').addEventListener('click', e => {
   console.log('内部 div 被单击');
}, false);

如果运行上述代码并单击内部 div,您将获得日志 −

内部 div 被单击

外部 div 被单击

2.事件捕获

document.querySelector('#outer').addEventListener('click', e => {
   console.log('Outer div is clicked');
}, true);
document.querySelector('#inner').addEventListener('click', e => {
   console.log('内部 div 被单击');
}, true);

如果您运行上述代码并单击内部 div,您将获得日志 −

外部 div 被单击

内部 div 被单击

相关文章


有用资源