DOM事件模型

134 阅读1分钟

DOM事件模型

元素触发一个事件后,会在他的父元素、子元素之间传播该事件。 这个传播过程叫做DOM事件流。

事件流

DOM事件流分为三个阶段,分别为:

捕获阶段:事件从window对象自上而下向目标节点传播的阶段;

目标阶段:真正的目标节点正在处理事件的阶段;

冒泡阶段:事件从目标节点自上而下向window对象传播的阶段。

Image.png

两种事件机制

js会在某一个阶段传播事件,由此催生了两种事件传播机制: 1.冒泡 从目标元素到window对象自下而上传播 2.捕获 从window对象到目标元素自上而下传播

事件注册时指定传播机制 addEventListener(type listener【,useCapture】)最后一个可选参数传入bool值,默认为false捕获,true为冒泡。

事件委托

考虑一下场景:

  1. 某div元素内有上百个button,要给他们注册相同的点击事件。
  2. 某div元素的子元素是动态生成的,要给子元素绑定事件。

显然,以上场景给子元素绑定监听事件是很繁琐的,如果给他们的父元素绑定监听事件,由于事件冒泡机制的存在,每个子元素触发事件都会传播至父元素,这样就相当于把子元素事件全部委托给父元素处理,这就是事件委托。

事件委托的优点: 1.节省内存(减少监听数) 2.可以监听动态元素