JS中的事件创建后,会按照如下过程在HTML元素间进行传播。
- 第一阶段:事件捕获,事件对对象沿DOM树向下传播
- 第二阶段:目标出发,运行事件监听函数
- 第三阶段:事件冒泡,事件沿DOM树向上传播

黑线表示的是事件的捕获阶段,捕获阶段捕获到三个click方法,红线表示的是事件的冒泡阶段,事件默认都是在冒泡阶段触发,所以三个click事件依次触发。

var btn1 = document.getElementById("btn1");
btn1.addEventListener("click", clickBtn1);
function clickBtn1() {
console.log("clickBtn1");
}
var div1 = document.getElementById("div1");
div1.addEventListener("click", clickDiv1);
function clickDiv1() {
console.log("clickDiv1");
}
var div2 = document.getElementById("div2");
div2.addEventListener("click", clickDiv2);
function clickDiv2() {
console.log("clickDiv2");
}

div1.addEventListener("click", clickDiv1,false);
btn1.addEventListener("click", clickBtn1,false);
div2.addEventListener("click", clickDiv2,true);
给按钮元素绑定clickDiv2,在捕获阶段(true为捕获阶段,false为冒泡阶段(默认)):

clickDiv2事件会在捕获阶段就触发,所以最先log出来。
本文探讨了JavaScript中事件传播的三个阶段:捕获、目标执行和冒泡。通过实例解释了事件如何沿着DOM树向下捕获并在目标元素上执行,最后向上冒泡。特别指出,默认情况下事件在冒泡阶段触发,并展示了如何在捕获阶段绑定事件的示例。
2950

被折叠的 条评论
为什么被折叠?



