微信小程序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 相关文章推荐
国外Lightbox v2.03.3 最新版 下载
Oct 17 Javascript
JS代码同步文本框内容的实例方法
Jul 12 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
Jul 16 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
Oct 22 Javascript
JS数组去重与取重的示例代码
Jan 24 Javascript
JavaScript的instanceof运算符学习教程
Jun 08 Javascript
详解angularjs中如何实现控制器和指令之间交互
May 31 Javascript
jQuery中复合选择器简单用法示例
Mar 31 jQuery
微信小程序使用canvas自适应屏幕画海报并保存图片功能
Jul 25 Javascript
JavaScript创建、读取和删除cookie
Sep 03 Javascript
微信小程序页面渲染实现方法
Nov 06 Javascript
React+EggJs实现断点续传的示例代码
Jul 07 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
高分R级DC动画剧《哈莉·奎茵》第二季正式预告首发
2020/04/09 欧美动漫
discuz7 phpMysql操作类
2009/06/21 PHP
摘自织梦CMS的HTTP文件下载类
2015/08/08 PHP
php中通用的excel导出方法实例
2017/12/30 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
论坛特效代码收集(落伍转发-不错)
2006/12/02 Javascript
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
JS中使用DOM来控制HTML元素
2016/07/31 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
Vue中封装input组件的实例详解
2017/10/17 Javascript
Vue.js实现的计算器功能完整示例
2018/07/11 Javascript
JavaScript中.min.js和.js文件的区别讲解
2019/02/13 Javascript
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
Python实现二维数组输出为图片
2018/04/03 Python
Python实现查找二叉搜索树第k大的节点功能示例
2019/01/24 Python
Python 进程之间共享数据(全局变量)的方法
2019/07/16 Python
python opencv将表格图片按照表格框线分割和识别
2019/10/30 Python
python3+opencv生成不规则黑白mask实例
2020/02/19 Python
python自动脚本的pyautogui入门学习
2020/04/01 Python
python中pop()函数的语法与实例
2020/12/01 Python
一个不错的HTML5 Canvas多层点击事件监听实例
2014/04/29 HTML / CSS
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
理肤泉英国官网:La Roche-Posay英国
2019/01/14 全球购物
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
三问三解心得体会
2014/09/05 职场文书
甘南现象心得体会
2014/09/11 职场文书
企业三严三实学习心得体会
2014/10/13 职场文书
公司周年庆典致辞
2015/07/30 职场文书
导游词之江苏溱潼古镇
2019/11/27 职场文书
手把手教你实现PyTorch的MNIST数据集
2021/06/28 Python
处理canvas绘制图片模糊问题
2022/05/11 Javascript