微信小程序----事件对象-绑定、冒泡、捕获

事件冒泡

事件触发验证

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

事件冒泡验证

在这里插入图片描述
在这里插入图片描述
验证后发现事件发生冒泡,点击子级时,除了触发子级事件,还会冒泡到父级,触发父级绑定的事件
点击父级红色区域
在这里插入图片描述
在这里插入图片描述
点击父级红色区域时,只会触发父级绑定的事件

target和currentTarget 属性的区别

event.target返回触发事件的元素
event.currentTarget返回绑定事件的元素
例如:事件冒泡到父级时
在这里插入图片描述
触发事件源头为child,然后冒泡至parent,所以event.target为触发事件的元素,event.currentTarget为绑定事件的元素。

通俗理解:

currentTarget为当前事件所绑定的组件
target是触发该事件的源头组件

事件对象

当事件回调触发的时候,逻辑层绑定该事件的处理函数会收到一个事件对象,对象的详细属性如下
在这里插入图片描述

事件对象event

在这里插入图片描述
touches 是一个数组,每个元素为一个 Touch 对象(canvas 触摸事件中携带的 touches 是 CanvasTouch 数组)。 表示当前停留在屏幕上的触摸点。
在这里插入图片描述
在这里插入图片描述
changedTouches 数据格式同 touches。 表示有变化的触摸点,如从无变有(touchstart),位置变化(touchmove),从有变无(touchend、touchcancel)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

事件对象event之dataset注意项:
  1. 在组件节点中可以附加一些自定义数据。这样,在事件中可以获取这些自定义的节点数据,用于事件的逻辑处理。
  2. 在 WXML 中,这些自定义数据以 data- 开头,多个单词由连字符 - 连接。这种写法中,连字符写法会转换成驼峰写法,而大写字符会自动转成小写字符。
    如:
    data-element-type,最终会呈现为 event.currentTarget.dataset.elementType;
    data-elementType,最终会呈现为 event.currentTarget.dataset.elementtype;

事件冒泡

阻止冒泡:

bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡

案例:

在这里插入图片描述
在这里插入图片描述
使用catch事件绑定后,此时点击蓝色子区域时,便不会再冒泡至父级区域

事件捕获

事件流包含事件冒泡与捕获,通过bind绑定会发生冒泡,catch则会阻止冒泡传播。自基础库版本 1.5.0 起,触摸类事件开始支持捕获阶段。

接下来介绍下事件捕获,首先要明确几点
  1. 捕获阶段位于冒泡阶段之前
  2. 绑定语法capture-bind、capture-catch
接下来简单测试下

在这里插入图片描述
在这里插入图片描述

  • 此时,再次点击子区域时触发顺序为右侧所示,由此可以验证出捕获优先级高于冒泡。
  • 注意:捕获阶段要求bind和catch后紧跟一个冒号,如bind:tap、catch:touchstart
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你爱我吗。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值