【js】事件流(事件冒泡与事件捕获)

事件流

事件流的模型是自上而下捕获,到达目标,然后再自下而上冒泡。分为三个阶段:

  • 事件捕获阶段(从上往下)
  • 处于目标阶段
  • 事件冒泡阶段(从下往上)

示意图:
在这里插入图片描述

事件处理程序

1、HTML

  • 直接在元素上添加onclick事件,属于事件冒泡

  • 当点击下层目标元素的时候,事件从下往上冒泡执行

例子:
在这里插入图片描述

  • 当点击span标签,依次输出:我是span 我是button 我是body
  • 当点击body标签,因为这已经是最外层标签,无法再往上执行,所以输出:我是body

2、DOM0级(html和js分离)

  • 元素.onclik = function(){}添加事件,属于事件冒泡

例子:
在这里插入图片描述

  • 当点击span标签,依次输出:我是span 我是button 我是body
  • 当点击body标签,因为这已经是最外层标签,无法再往上执行,所以输出:我是body

2、DOM2级

  • 元素.addEventListener(事件名,函数,布尔值)添加事件,第三个参数默认false,即默认事件冒泡;第三个参数为true,则为事件捕获

例子1:(事件冒泡)
在这里插入图片描述

  • 当点击span标签,依次输出:我是span 我是button 我是body
  • 当点击body标签,因为这已经是最外层标签,无法再往上执行,所以输出:我是body

例子2:(事件捕获)
在这里插入图片描述

  • 当点击span标签,依次输出:我是body 我是button 我是span
  • 当点击body标签,输出:我是body

面试题

在这里插入图片描述

  • 事件流优先级:事件捕获 -> 目标阶段 -> 事件冒泡
  • 当点击baby按钮,先从上往下触发事件捕获(输出mother、daughter),到达底部后,触发事件冒泡(输出baby、grandma)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值