事件冒泡是指当一个元素触发了某个事件后,该事件会从当前元素开始向上层元素逐级触发,直到触发到document对象为止。
事件捕获与事件冒泡相反,是从document对象开始,逐级向下触发,直到触发到当前元素为止。
在JavaScript中,可以通过addEventListener()方法来绑定事件,并指定是否使用事件捕获。该方法有三个参数:
下面是一个使用事件冒泡的例子:
const parent = document.getElementById('parent');
const child = document.getElementById('child');
parent.addEventListener('click', function() {
console.log('parent clicked');
});
child.addEventListener('click', function() {
console.log('child clicked');
});
当点击child元素时,事件会从child元素开始向上冒泡,依次触发child和parent元素的click事件,输出结果为:
child clicked
parent clicked
下面是一个使用事件捕获的例子:
const parent = document.getElementById('parent');
const child = document.getElementById('child');
parent.addEventListener('click', function() {
console.log('parent clicked');
}, true);
child.addEventListener('click', function() {
console.log('child clicked');
}, true);
当点击child元素时,事件会从document对象开始向下捕获,依次触发parent和child元素的click事件,输出结果为:
parent clicked
child clicked