js事件的三个阶段(捕获、目标、冒泡)

当鼠标点击所看到的的按钮时,其实发生了一系列的事件传递,可以想象一下,button实际上是被body“包裹”起来的,body是被html“包裹”起来的,html是被document“包裹”起来的,document是被window“包裹”起来的。所以,在你的鼠标点下去的时候,最先获得这个点击的是最外面的window,然后经过一系列传递才会传到最后的目标button,当传到button的时候,这个事件又会像水底的泡泡一样慢慢往外层穿出,直到window结束。

综上,一个事件的传递过程包含三个阶段,分别称为:

捕获阶段,目标阶段,冒泡阶段

目标指的就是包裹得最深的那个元素。

相关方法:
event.stopPropagation()(既可阻止冒泡也可阻止捕获);
event.stopImmediatePropagation() (既可阻止冒泡也可阻止捕获,同时还能阻止该元素的其他事件发生);

事件绑定:
el.addEventListener('', func, bool)
el.removeEventListener( '', func, bool )
三个参数:事件名称,要分配的函数和处理函数是用于冒泡阶段(false)还是捕获阶段(true),默认为冒泡阶段false
注意:如果使用addEventListener()将事件处理函数加入到捕获阶段,则必须在removeEventListener()中指明是捕获阶段,才能正确地将这个事件处理函数删除

猜你喜欢

转载自blog.csdn.net/qq_33576343/article/details/80899426