微信小程序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 变量类型转换常用函数与代码[比较全]
Dec 01 Javascript
Javascript 键盘keyCode键码值表
Dec 24 Javascript
js 日期比较相关天数代码
Apr 02 Javascript
jquery简单实现网页层的展开与收缩效果
Aug 07 Javascript
辨析JavaScript中的Undefined类型与null类型
May 26 Javascript
分享一个精简的vue.js 图片lazyload插件实例
Mar 13 Javascript
vue2中,根据list的id进入对应的详情页并修改title方法
Aug 24 Javascript
JavaScript类的继承操作实例总结
Dec 20 Javascript
js实现时钟定时器
Mar 26 Javascript
将Vue组件库更换为按需加载的方法步骤
May 06 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
Oct 17 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
Jan 20 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
删除及到期域名的查看(抢域名必备哦)
2008/05/14 PHP
php 过滤危险html代码
2009/06/29 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
2009/09/30 PHP
php GeoIP的使用教程
2011/03/09 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
php微信分享到朋友圈、QQ、朋友、微博
2019/02/18 PHP
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
YUI模块开发原理详解
2013/11/18 Javascript
解决extjs grid 不随窗口大小自适应的改变问题
2014/01/26 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
一篇文章掌握RequireJS常用知识
2016/01/26 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
javascript验证内容为数字以及长度为10的简单实例
2016/08/20 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
2016/09/24 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
JS 全屏和退出全屏详解及实例代码
2016/11/07 Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
2017/04/12 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
angularjs2中父子组件的数据传递的实例代码
2017/07/05 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
2017/09/28 Javascript
vue2.0 如何把子组件的数据传给父组件(推荐)
2018/01/15 Javascript
在vue中获取token,并将token写进header的方法
2018/09/26 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
[41:52]2018DOTA2亚洲邀请赛3月29日 小组赛A组 TNC VS OpTic
2018/03/30 DOTA
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
2017/12/20 Python
Python装饰器(decorator)定义与用法详解
2018/02/09 Python
pandas筛选某列出现编码错误的解决方法
2018/11/07 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
2019/06/18 Python
几款好用的python工具库(小结)
2020/10/20 Python
彪马土耳其官网:PUMA土耳其
2019/07/14 全球购物
C#和SQL Server的面试题
2016/08/12 面试题
设计模式的基本要素是什么
2014/04/21 面试题
小学运动会开幕词
2016/03/04 职场文书
Go中的条件语句Switch示例详解
2021/08/23 Golang