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


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 相关文章推荐
JQueryEasyUI datagrid框架的进阶使用
Apr 08 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
Jan 12 Javascript
PHP 数组current和next用法分享
Mar 05 Javascript
jQuery插件slider实现拖动滑块选取价格范围
Apr 30 Javascript
jstree的简单实例
Dec 01 Javascript
如何使用vuejs实现更好的Form validation?
Apr 07 Javascript
vue基于Element构建自定义树的示例代码
Sep 19 Javascript
vue父组件向子组件动态传值的两种方法
Nov 11 Javascript
react-router4 配合webpack require.ensure 实现异步加载的示例
Jan 18 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
Apr 26 Javascript
JS中的算法与数据结构之列表(List)实例详解
Aug 16 Javascript
jquery实现穿梭框功能
Jan 19 jQuery
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
php统计文章排行示例
2014/03/04 PHP
php格式化金额函数分享
2015/02/02 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
PHP检测一个数组有没有定义的方法步骤
2019/07/20 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
window.print打印指定div实例代码
2013/12/13 Javascript
jQuery实现渐变下拉菜单的简单方法
2015/03/11 Javascript
基于jquery实现智能提示控件intellSeach.js
2016/03/17 Javascript
详解nodejs与javascript中的aes加密
2016/05/22 NodeJs
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
原生JS实现简单放大镜效果
2017/02/08 Javascript
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
Vue.js点击切换按钮改变内容的实例讲解
2018/08/22 Javascript
动态内存分配导致影响Javascript性能的问题
2018/12/18 Javascript
原生JS实现的自动轮播图功能详解
2018/12/28 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
[10:54]Team Spirit vs Navi
2018/06/07 DOTA
用Python的urllib库提交WEB表单
2009/02/24 Python
python计算圆周长、面积、球体体积并画出圆
2014/04/08 Python
Django开发中复选框用法示例
2018/03/20 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
Python wxpython模块响应鼠标拖动事件操作示例
2018/08/23 Python
python3中numpy函数tile的用法详解
2019/12/04 Python
python 爬取免费简历模板网站的示例
2020/09/27 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
当文件系统受到破坏时,如何检查和修复系统?
2012/03/09 面试题
工艺工程师工作职责
2013/11/23 职场文书
青安岗事迹材料
2014/05/14 职场文书
消防宣传口号
2014/06/16 职场文书
小学推普周活动总结
2015/05/07 职场文书
大学文艺委员竞选稿
2015/11/19 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书
Python安装使用Scrapy框架
2022/04/12 Python