事件流描述的是从页面中接收事件的顺序。
事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程即 DOM 事件流。
DOM 事件流分为3个阶段:
-
捕获阶段
从根元素
HTML
到事件源。某个元素的某类型事件被触发,先触发根元素,再向子一级,直到事件源。
-
当前目标阶段
-
冒泡阶段
从事件源向父级,一直到根元素
HTML
。某个元素的某类型事件被触发,父元素同类型事件也会被触发。
注意:
-
JS 代码中只能执行捕获或者冒泡其中的一个阶段。
-
onclick
和attachEvent
只能得到冒泡阶段。 -
addEventListener(type, listener[, useCapture])
第三个参数如果是true
,表示在事件捕获阶段调用事件处理程序;如果是
false
(不写默认就是false
),表示在事件冒泡阶段调用事件处理程序。 -
实际开发中更关注事件冒泡。
-
有些事件是没有冒泡的,比如
onblur
、onfocus
、onmouseenter
、onmouseleave
。 -
事件冒泡有时候会带来麻烦,有时候又会帮助很巧妙的做某些事件。
-
React使用事件委托的方式处理点击事件。
事件委托:一个事件理应绑定到相应需要触发的元素上,但却将该事件绑定到其父元素上,利用事件冒泡原理,触发其事件。
📘📘欢迎在我的博客上访问:
https://lzxjack.top/