在DOM中,当一个元素发生事件时,事件会按照以下顺序执行:
-
捕获阶段:事件从window对象开始,向下传递到目标元素所在的最深的祖先元素,此阶段的主要作用是为了执行一些全局的捕获事件监听器。
-
目标阶段:事件传递到目标元素,执行目标元素上绑定的事件监听器。
-
冒泡阶段:事件从目标元素开始,向上传递到window对象,执行祖先元素上的事件监听器,此阶段和捕获阶段相反,是为了执行一些全局的冒泡事件监听器。
这三个阶段统称为“事件传播”。
需要注意的是,在事件处理的过程中,如果在捕获阶段或冒泡阶段中的某个元素上已经调用了event.stopPropagation()
方法,则会立即停止事件传播,后续阶段中的事件监听器将不会执行。