03-事件模型

nobility 发布于 2022-07-29 04-事件 775 次阅读


事件模型

绑定事件

事件监听函数中的this指向的是这个元素节点,若是箭头函数其this会指向宿主环境,可能是顶层对象,所以监听函数中若想使用this就不要使用监听韩素

共有三种方式绑定事件:

  1. HTML的on前缀属性(其实是GlobalEventHandlers接口的属性):要求属性值是触发事件执行的js代码,所以不能是函数名,而是执行函数的语句
  2. Element节点的on前缀属性:要求是绑定的是监听函数,为同一事件属性绑定多个函数时会覆盖掉前面绑定的监听函数
  3. 使用EventTarget接口的方法:可以为同一个事件绑定多个不同的监听函数;可以指定触发阶段;不仅仅DOM实现了该接口,如XMLHttpRequestwindow等内置对象也可以使用该接口的方法

事件流

当父元素和子元素绑定了同一个事件时,该事件流会在父元素与子元素之间传播一个来回,共有三个阶段:

  1. 从父元素到子元素节点,称为捕获阶段
  2. 到达目标节点时,称为目标阶段
  3. 又从子元素回传给父元素,称为冒泡阶段

使用EventTarget接口只能指定捕获和冒泡这两个阶段,所以若同时指定两个阶段的回调函数,则会触发两次该监听函数;使用Element节点的on前缀属性只能是冒泡阶段

事件委托

利用事件冒泡的特性,为父元素阶段绑定一个事件,子元素触发事时该事件会冒泡到父元素上,所以相当于为每个子元素绑定了一个监听函数

加油啊!即便没有转生到异世界,也要拿出真本事!!!\(`Δ’)/
最后更新于 2022-07-29