微信小程序bindtap事件与冒泡阻止详解


Posted in Javascript onAugust 08, 2019

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
为你的网站增加亮点的9款jQuery插件推荐
May 03 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
Jan 02 Javascript
javascript实现分栏显示小技巧附图
Oct 13 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
Sep 02 Javascript
JS判断浏览器是否安装flash插件的简单方法
Sep 13 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
Dec 01 Javascript
详解jquery easyui之datagrid使用参考
Dec 05 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
Dec 08 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
Jul 18 Javascript
js计算最大公约数和最小公倍数代码实例
Sep 11 Javascript
vue中jsonp插件的使用方法示例
Sep 10 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
Sep 21 Javascript
vue2 拖动排序 vuedraggable组件的实现
Aug 08 #Javascript
React+TypeScript+webpack4多入口配置详解
Aug 08 #Javascript
JavaScript:ES2019 的新特性(译)
Aug 08 #Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
Aug 08 #Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
Aug 08 #Javascript
javascript实现blob加密视频源地址的方法
Aug 08 #Javascript
使用ThinkJs搭建微信中控服务的实现方法
Aug 08 #Javascript
You might like
模拟flock实现文件锁定
2007/02/14 PHP
举例详解PHP脚本的测试方法
2015/08/05 PHP
遍历echsop的region表形成缓存的程序实例代码
2016/11/01 PHP
YII2框架中使用yii.js实现的post请求
2017/04/09 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
JavaScript中的View-Model使用介绍
2011/08/11 Javascript
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
javascript感应鼠标图片透明度显示的方法
2015/02/24 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形网络(1)
2015/11/30 Javascript
NodeJS实现阿里大鱼短信通知发送
2016/01/17 NodeJs
Bootstrap Metronic完全响应式管理模板之菜单栏学习笔记
2016/07/08 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
2016/11/30 Javascript
基于jquery实现五星好评
2017/11/18 jQuery
Element Input组件分析小结
2018/10/11 Javascript
小程序采集录音并上传到后台
2019/11/22 Javascript
JavaScript创建表格的方法
2020/04/13 Javascript
vue的webcamjs集成方式
2020/11/16 Javascript
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
python 矩阵增加一行或一列的实例
2018/04/04 Python
python解压TAR文件至指定文件夹的实例
2019/06/10 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
2020/03/06 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
使用css3实现的tab选项卡代码分享
2014/12/09 HTML / CSS
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
指针和引用有什么区别
2013/01/13 面试题
Linux如何压缩可执行文件
2013/10/21 面试题
通信工程毕业生自荐信
2013/11/01 职场文书
2014学校庆三八妇女节活动总结
2014/03/01 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
保安辞职申请书应该怎么写?
2019/07/15 职场文书
导游词之云南省玉龙雪山
2019/12/19 职场文书
DQL数据查询语句使用示例
2022/12/24 MySQL