Javascript的事件模型在触发时可以分为3个阶段:捕获、目标、冒泡。
事件先捕获,再冒泡,比如下面这个例子:
Document
这里有4个连续嵌套的div,每个div分别添加了捕获和冒泡(由addEventListener函数的第3个参数决定)的2个点击事件处理函数。
点击div之后在控制台输出:
Capture: Level_1
Capture: Level_2 Capture: Level_3 Bubbling: Level_4 Capture: Level_4 Bubbling: Level_3 Bubbling: Level_2 Bubbling: Level_1事件从顶层div开始触发,直到目标div,之后再冒泡。但是对于目标div(即Level_4),捕获和冒泡的回调函数的执行顺序取决于addEventListener的调用顺序,即这两个回调函数的添加顺序,先添加则先调用。