微信小程序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 相关文章推荐
键盘上一张下一张兼容IE/google/firefox等浏览器
Jan 28 Javascript
jQuery事件用法实例汇总
Aug 29 Javascript
详解JavaScript中常用的函数类型
Nov 18 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成&quot;...&quot;)
Nov 28 Javascript
jquery删除数组中重复元素
Dec 05 Javascript
Vue 父子组件、组件间通信
Mar 08 Javascript
Vue.js简易安装和快速入门(第二课)
Oct 17 Javascript
vue ssr 指南详读
Jun 29 Javascript
Vuex 单状态库与多模块状态库详解
Dec 11 Javascript
JS控制只能输入数字并且最多允许小数点两位
Nov 24 Javascript
vue 监听窗口变化对页面部分元素重新渲染操作
Jul 28 Javascript
vue3.0实现插件封装
Dec 14 Vue.js
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
php批量删除数据库下指定前缀的表以prefix_为例
2014/08/24 PHP
php表单习惯用的正则表达式
2017/10/11 PHP
PHP实现数组根据某个单元字段排序操作示例
2018/08/01 PHP
firefox浏览器下javascript 拖动层效果与原理分析代码
2007/12/04 Javascript
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
jquery ajax abort()的使用方法
2010/10/28 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
Bootstrap导航条鼠标悬停下拉菜单
2017/01/04 Javascript
Nodejs之TCP服务端与客户端聊天程序详解
2017/07/07 NodeJs
原生js实现简单的模态框示例
2017/09/08 Javascript
react-native中ListView组件点击跳转的方法示例
2017/09/30 Javascript
nodejs前端模板引擎swig入门详解
2018/05/15 NodeJs
vue实现在一个方法执行完后执行另一个方法的示例
2018/08/25 Javascript
vue根据值给予不同class的实例
2018/09/29 Javascript
vue中@change兼容问题详解
2019/10/25 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
[03:14]2014DOTA2西雅图国际邀请赛 EG战队巡礼
2014/07/07 DOTA
Python编程之gui程序实现简单文件浏览器代码
2017/12/08 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
2018/06/25 Python
Python之pymysql的使用小结
2019/07/01 Python
python 变量初始化空列表的例子
2019/11/28 Python
pytorch获取模型某一层参数名及参数值方式
2019/12/30 Python
keras 简单 lstm实例(基于one-hot编码)
2020/07/02 Python
HTML5 拖放(Drag 和 Drop)详解与实例代码
2017/09/14 HTML / CSS
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
精致的手工皮鞋:Shoe Embassy
2019/11/08 全球购物
Derek Rose官网:英国高档睡衣、家居服和内衣品牌
2020/01/18 全球购物
如何撰写岗位职责
2014/02/01 职场文书
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
公司放假通知怎么写
2015/04/15 职场文书
信用卡催款律师函
2015/05/27 职场文书
python实现简单聊天功能
2021/07/07 Python
日本十大血腥动漫,那些被禁播的动漫盘点
2022/03/21 日漫