微信小程序 冒泡事件原理解析


Posted in Javascript onSeptember 27, 2019

在微信小程序的事件分为冒泡事件和非冒泡事件:

冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递。

非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。

WXML的冒泡事件列表:

类型 触发条件 最低版本
touchstart 手指触摸动作开始  
touchmove 手指触摸后移动  
touchcancel 手指触摸动作被打断,如来电提醒,弹窗  
touchend 手指触摸动作结束  
tap 手指触摸后马上离开  
longpress 手指触摸后,超过350ms再离开,如果指定了事件回调函数并触发了这个事件,tap事件将不被触发 1.5.0
longtap 手指触摸后,超过350ms再离开(推荐使用longpress事件代替)  
transitionend 会在 WXSS transition 或 wx.createAnimation 动画结束后触发  
animationstart 会在一个 WXSS animation 动画开始时触发  
animationiteration 会在一个 WXSS animation 一次迭代结束时触发  
animationend 会在一个 WXSS animation 动画完成时触发  
touchforcechange 在支持 3D Touch 的 iPhone 设备,重按时会触发 1.9.90

注:除上表之外的其他组件自定义事件如无特殊声明都是非冒泡事件,如 form 的submit事件,input 的input事件,scroll-view 的scroll事件,(详见各个组件)

事件绑定

以bind或catch开头,然后跟上事件的类型,如bindtap、catchtouchstart。自基础库版本 1.5.0 起,在非原生组件中,bind和catch后可以紧跟一个冒号,其含义不变,如bind:tap、catch:touchstart。

事件冒泡的条件:父元素与子元素绑定同一类事件并且子元素的绑定方式是bind(catch开头会阻止事件冒泡),代码如下:

<view id="outter" bindtap="tap1">
  outer view
  <view id="middle" bindtap="tap2">
   middle view
   <view id="inner" bindtap="tap3">
    inner view
   </view>
  </view>
</view>

tap1: function (e) {
console.log(1, e)
},
tap2: function (e) {

console.log(2, e)
},
tap3: function (e) {

console.log(3, e)
},

点击id为inner的元素,同时也触发了id为middle和outter的元素

微信小程序 冒泡事件原理解析

把inner的bindtap改成catchtap就会阻止事件冒泡

微信小程序 冒泡事件原理解析

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

Javascript 相关文章推荐
3款实用的在线JS代码工具(国外)
Mar 15 Javascript
jquery如何改变html标签的样式(两种实现方法)
Jan 16 Javascript
JS子父窗口互相操作取值赋值的方法介绍
May 11 Javascript
javascript实现回车键提交表单方法总结
Jan 10 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
Aug 30 Javascript
Javascript中的迭代、归并方法详解
Jun 14 Javascript
shiro授权的实现原理
Sep 21 Javascript
vue-resource + json-server模拟数据的方法
Nov 02 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
Jun 22 Javascript
layui字体图标 loading图标静止不旋转的解决方法
Sep 23 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
Mar 31 Javascript
js实现简易拖拽的示例
Oct 26 Javascript
JavaScript实现背景自动切换小案例
Sep 27 #Javascript
vue监听用户输入和点击功能
Sep 27 #Javascript
vue实现文字加密功能
Sep 27 #Javascript
微信小程序 动态修改页面数据及参数传递过程详解
Sep 27 #Javascript
vue实现购物车小案例
Sep 27 #Javascript
解决layui中onchange失效以及form动态渲染失效的问题
Sep 27 #Javascript
layui 地区三级联动 form select 渲染的实例
Sep 27 #Javascript
You might like
一道求$b相对于$a的相对路径的php代码
2010/08/08 PHP
php实现的美国50个州选择列表实例
2015/04/20 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
Smarty模板简单配置与使用方法示例
2016/05/23 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
JQuery $.each遍历JavaScript数组对象实例
2014/09/01 Javascript
js实现三张图(文)片一起切换的banner焦点图
2015/08/25 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
2016/11/23 Javascript
Vue.js系列之项目搭建(1)
2017/01/03 Javascript
jquery.tableSort.js表格排序插件使用方法详解
2020/08/12 Javascript
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
JS实现换肤功能的方法实例详解
2019/01/30 Javascript
JS html事件冒泡和事件捕获操作示例
2019/05/01 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
JavaScript 反射和属性赋值实例解析
2019/10/28 Javascript
理解Python中的类与实例
2015/04/27 Python
学习python 之编写简单乘法运算题
2016/02/27 Python
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
tensorflow获取变量维度信息
2018/03/10 Python
PyQt5每天必学之弹出消息框
2018/04/19 Python
关于python之字典的嵌套,递归调用方法
2019/01/21 Python
python实现函数极小值
2019/07/10 Python
django fernet fields字段加密实践详解
2019/08/12 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
服装销售人员求职自我评价
2013/09/26 职场文书
对公司合理化的建议书
2014/03/12 职场文书
护理目标管理责任书
2014/07/25 职场文书
最美孝心少年事迹材料
2014/08/15 职场文书
万里长城导游词
2015/01/30 职场文书
2015年超市员工工作总结
2015/05/04 职场文书
医护人员继续教育学习心得体会
2016/01/19 职场文书
使用react+redux实现计数器功能及遇到问题
2021/06/02 Javascript
详解Python生成器和基于生成器的协程
2021/06/03 Python
Python类方法总结讲解
2021/07/26 Python