小程序bindtap事件与冒泡

bindtap就是点击事件

在.wxml文件绑定:

<text id='textId' data-userxxx='100' bindtap='tapMessage'>cilck here</text>

在一个组件的属性上添加bindtap并赋予一个值(一个函数名)

当点击该组件时, 会触发相应的函数执行

在后台.js文件中定义tapMessage函数:

//index.js
Page({
  data: {
    mo: 'Hello World!!',
    userid : '1234',
  },

   // 定义函数
  tapMessage: function(event) {
    console.log(event.target.id);       // 可获得
    console.log(event.target.name);     // 无法获得, 通过target只能直接获取id
    console.log(event.target.dataset);  // 要获得其它属性, 需要从dataset(数据集)中获取
    console.log(event.target.dataset.userxxx);  // userxxx为自定义的属性名, 但命名方式为:data-userxxx
  
    // 这里还原使用userXxx
    console.log(event.target.dataset.userXxx);
  }
})

event封装的是该事件的信息, 如上通过它可得到一些数据

注意一点:

                  <!-- data-userXxx,这个大写的X要改为-x -->
    <text id='textId' data-user-xxx='100' bindtap='tapMessage'>cilck here</text>

自定义数据(data-)中的大写改为 短横线+其小写

取数据时, 去掉data和那些短横线并还原大写 (data-user-xxx  --> userXxx)

 

事件冒泡就是指嵌套事件发生

如果多层标签嵌套, 里层事件发生后, 其外层会相应发生, 如:

 <view bindtap='handout'>
    outer
    <view bindtap='handmiddle'>
      middle
      <view bindtap='handinner'>inner</view>
    </view>
  </view>
  handout: function () {
    console.log("out");
  },

  handmiddle: function () {
    console.log("middle");
  },

  handinner: function () {
    console.log("inner");
  }

点击inner三个事件都执行, 点击middlek执行handmiddle和handout, 点击out只执行handout

阻止事件冒泡行为: 将bindtap改为catchtap就行了, 只会触发自身的点击事件

 <view bindtap='handout'>
    outer
    <view catchtap='handmiddle'>
      middle
      <view bindtap='handinner'>inner</view>
    </view>
  </view>

需要理解是, 它阻断自身的冒泡行为

如上点击inner, 执行的是handinner和handmiddle两个函数

不管是不是自身触发的点击行为, 传到我这里, 我就将它阻断(不再向上传递)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值