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


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 相关文章推荐
Ajax::prototype 源码解读
Jan 22 Javascript
jQuery插件 tabBox实现代码
Feb 09 Javascript
使用Jquery来实现可以输入值的下拉选单 雏型
Dec 06 Javascript
改变文件域的样式实现思路同时兼容ie、firefox
Oct 23 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
Dec 25 Javascript
javascript获取flash版本号的方法
Nov 20 Javascript
AngularJS指令中的绑定策略实例分析
Dec 14 Javascript
通过示例彻底搞懂js闭包
Aug 10 Javascript
JS简单实现滑动加载数据的方法示例
Oct 18 Javascript
Angular2实现组件交互的方法分析
Dec 19 Javascript
JavaScript 反射和属性赋值实例解析
Oct 28 Javascript
vue props 一次传多个值实例
Jul 22 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
php+ajax实时输入自动搜索匹配的方法
2014/12/26 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
php数组遍历类与用法示例
2019/05/24 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
聊聊 PHP 8 新特性 Attributes
2020/08/19 PHP
js写的评论分页(还不错)
2013/12/23 Javascript
JS实现在网页中弹出一个输入框的方法
2015/03/03 Javascript
jquery实现的美女拼图游戏实例
2015/05/04 Javascript
js实现图片轮播效果
2015/12/19 Javascript
JQuery之proxy实现绑定代理方法
2016/08/01 Javascript
[54:10]完美世界DOTA2联赛PWL S2 Magma vs FTD 第二场 11.29
2020/12/03 DOTA
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
浅谈python中的实例方法、类方法和静态方法
2017/02/17 Python
python使用tcp实现局域网内文件传输
2020/03/20 Python
深入浅析python 协程与go协程的区别
2019/05/09 Python
浅谈pyqt5在QMainWindow中布局的问题
2019/06/21 Python
python数据挖掘需要学的内容
2019/06/23 Python
python实现回旋矩阵方式(旋转矩阵)
2019/12/04 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
2020/02/28 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
python3 kubernetes api的使用示例
2021/01/12 Python
python中的时区问题
2021/01/14 Python
CSS的pointer-events属性详细介绍(作用和注意事项)
2014/04/23 HTML / CSS
css sprite简单实例
2016/05/23 HTML / CSS
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
Ann Taylor官方网站:美国最大的女性产品制造商之一
2016/09/14 全球购物
个人简历自荐信
2013/12/05 职场文书
会计岗位职责模板
2014/03/12 职场文书
餐厅感恩节活动策划方案
2014/10/11 职场文书
浅谈如何写好演讲稿?
2019/06/12 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书
测量JavaScript函数的性能各种方式对比
2021/04/27 Javascript
JavaScript实现两个数组的交集
2022/03/25 Javascript
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL