A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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两个函数

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


4 个回复

正序浏览
回复 使用道具 举报
优秀,奈斯
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马