事件冒泡是DOM(文档对象模型)中的一种事件传播方式。当一个子元素上的事件被触发时,这个事件会从最深层的元素开始,逐层向上传播,直到传播到最外层的元素(通常是document
对象或者window
对象)。
例如,假设你有一些嵌套的元素,如下所示:
<div id="outer">
<div id="inner">
<button id="button">Click me</button>
</div>
</div>
现在,如果你点击了这个按钮,那么”click”事件首先会在button
元素上触发,然后会冒泡到inner
元素,接着会冒泡到outer
元素,最后会冒泡到document
和window
对象。
你可以通过在事件处理函数中调用event.stopPropagation()
方法来阻止事件冒泡。例如:
let button = document.getElementById('button');
button.addEventListener('click', function(event) {
event.stopPropagation();
console.log('Button clicked, but the event will not bubble up');
});
在这个例子中,当你点击按钮时,虽然会触发”click”事件,但这个事件不会冒泡到包含按钮的任何元素,因为我们在事件处理函数中调用了event.stopPropagation()
。
事件冒泡是事件传播的默认机制,但请注意,还有另一种事件传播的方式,叫做事件捕获,它是从最外层的元素开始,逐层向内传播,直到传播到触发事件的元素。