微信小程序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 相关文章推荐
JS Timing
Apr 21 Javascript
JavaScript中null与undefined分析
Jul 25 Javascript
JavaScript 的继承
Oct 01 Javascript
js加入收藏以及使用Jquery更改透明度
Jan 26 Javascript
struts2+jquery组合验证注册用户是否存在
Apr 30 Javascript
setInterval计时器不准的问题解决方法
May 08 Javascript
js获取图片宽高的方法
Nov 25 Javascript
浅谈js中的变量名和函数名重名
Feb 13 Javascript
vue.js的computed,filter,get,set的用法及区别详解
Mar 08 Javascript
JS使用栈判断给定字符串是否是回文算法示例
Mar 04 Javascript
微信小程序如何使用云开发
May 17 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
Sep 12 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
PHP4和PHP5共存于一系统
2006/11/17 PHP
将一维或多维的数组连接成一个字符串的php代码
2010/08/08 PHP
php设计模式 Adapter(适配器模式)
2011/06/26 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
2014/08/21 PHP
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
jQuery Ajax 全解析
2009/02/08 Javascript
jQuery之排序组件的深入解析
2013/06/19 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
用json方式实现在 js 中建立一个map
2014/05/02 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
原生js实现模拟滚动条
2015/06/15 Javascript
基于JS实现的倒计时程序实例
2015/07/24 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
php 修改密码实现代码
2017/05/24 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
2020/08/06 Javascript
vue使用openlayers实现移动点动画
2020/09/24 Javascript
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
python发送HTTP请求的方法小结
2015/07/08 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
Python lxml解析HTML并用xpath获取元素的方法
2019/01/02 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
2019/09/03 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
python应用Axes3D绘图(批量梯度下降算法)
2020/03/25 Python
python不到50行代码完成了多张excel合并的实现示例
2020/05/28 Python
python如何写出表白程序
2020/06/01 Python
Brora官网:英国领先的羊绒服装品牌
2019/08/28 全球购物
英国医生在线预约:Top Doctors
2019/10/30 全球购物
台湾屈臣氏网路商店:Watsons台湾
2020/12/29 全球购物
美国小蜜蜂Burt’s Bees德国官网:天然唇部、皮肤和身体护理产品
2020/06/14 全球购物
幼儿园新学期寄语
2014/01/18 职场文书
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书
项目转让协议书
2014/10/27 职场文书
干部考察材料范文
2014/12/24 职场文书
英文版辞职信
2015/02/28 职场文书
学生会工作感言
2015/08/07 职场文书