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


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 相关文章推荐
才发现的超链接js导致网页中GIF动画停止的解决方法
Nov 02 Javascript
jquery ajax 同步异步的执行 return值不能取得的解决方案
Jan 08 Javascript
jquery.Jwin.js 基于jquery的弹出层插件代码
May 23 Javascript
JS实现跟随鼠标闪烁转动色块的方法
Feb 26 Javascript
JS实现简单的二元方程计算器功能示例
Jan 03 Javascript
jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】
Mar 08 Javascript
jquery自定义显示消息数量
Dec 19 jQuery
vue-cli3.0使用及部分配置详解
Aug 29 Javascript
JS数组去重的6种方法完整实例
Dec 08 Javascript
vue中使用极验验证码的方法(附demo)
Dec 04 Javascript
JS实现动态无缝轮播
Jan 11 Javascript
JavaScript 常见的继承方式汇总
Sep 17 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代码包装修正版
2008/03/15 PHP
[原创]效率较高的php下读取文本文件的代码
2008/07/02 PHP
php学习笔记 [预定义数组(超全局数组)]
2011/06/09 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
2013/06/29 PHP
php+mysqli使用面向对象方式查询数据库实例
2015/01/29 PHP
php修改文件上传限制方法汇总
2015/04/07 PHP
使用PHP如何实现高效安全的ftp服务器(一)
2015/12/20 PHP
PHP面向对象程序设计之对象的遍历操作示例
2019/06/12 PHP
Dom 结点创建 基础知识
2011/10/01 Javascript
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
每天一篇javascript学习小结(属性定义方法)
2015/11/19 Javascript
JS自定义函数实现时间戳转换成date的方法示例
2017/08/27 Javascript
原生JS实现获取及修改CSS样式的方法
2018/09/04 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
[00:44]2016完美“圣”典 风云人物:Mikasa宣传片
2016/12/07 DOTA
python中的多线程实例教程
2014/08/27 Python
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
python清除字符串里非字母字符的方法
2015/07/02 Python
浅谈python import引入不同路径下的模块
2017/07/11 Python
Python中@property的理解和使用示例
2019/06/11 Python
python简单实现矩阵的乘,加,转置和逆运算示例
2019/07/10 Python
python 进程的几种创建方式详解
2019/08/29 Python
Python猴子补丁Monkey Patch用法实例解析
2020/03/23 Python
Python 多进程原理及实现
2020/12/21 Python
用python制作个音乐下载器
2021/01/30 Python
css3中背景尺寸background-size详解
2014/09/02 HTML / CSS
Farfetch台湾官网:奢侈品牌时尚购物平台
2019/06/17 全球购物
电信专业应届生自荐信
2013/09/28 职场文书
优秀老师事迹材料
2014/02/05 职场文书
乡镇创先争优活动总结
2014/08/28 职场文书
党员民主生活会整改措施
2014/09/26 职场文书
群众路线教育查摆剖析材料
2014/10/10 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
工程质检员岗位职责
2015/04/08 职场文书
车位出租协议书范本
2016/03/19 职场文书