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


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 相关文章推荐
菜鸟javascript基础资料整理3 正则
Dec 06 Javascript
jQuery实现HTML5 placeholder效果实例
Dec 09 Javascript
js实现简单的可切换选项卡效果
Apr 10 Javascript
javascript实现简单查找与替换的方法
Jul 22 Javascript
AngularJS中的表单简单入门
Jul 28 Javascript
JavaScript中in和hasOwnProperty区别详解
Aug 04 Javascript
Angular项目从新建、打包到nginx部署全过程记录
Dec 09 Javascript
微信小程序中上传图片并进行压缩的实现代码
Aug 28 Javascript
JAVA面试题 static关键字详解
Jul 16 Javascript
基于node+websocket+html实现腾讯课堂聊天室聊天功能
Mar 04 Javascript
js实现简单点赞操作
Mar 17 Javascript
如何使用jQuery操作Cookies方法解析
Sep 08 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
《超神学院》霸气归来, 天使彦上演维多利亚的秘密
2020/03/02 国漫
基于mysql的论坛(4)
2006/10/09 PHP
php简单获取目录列表的方法
2015/03/24 PHP
thinkPHP删除前弹出确认框的简单实现方法
2016/05/16 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
2017/08/07 PHP
CSS和JS标签style属性对照表(方便js开发的朋友)
2010/11/11 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
实现JavaScript高性能的数据存储
2016/12/11 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证)
2017/05/09 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
2017/05/10 Javascript
简单实现js点击展开二级菜单功能
2017/05/16 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
2018/02/22 Javascript
Javascript中parseInt的正确使用方式
2018/10/17 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
2019/07/25 jQuery
原生JS实现无缝轮播图片
2020/06/24 Javascript
PHP webshell检查工具 python实现代码
2009/09/15 Python
搞笑的程序猿:看看你是哪种Python程序员
2015/06/12 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
python十进制和二进制的转换方法(含浮点数)
2018/07/07 Python
python3 flask实现文件上传功能
2020/03/20 Python
Python两台电脑实现TCP通信的方法示例
2019/05/06 Python
python numpy实现rolling滚动案例
2020/06/08 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
css 元素选择器的简单实例
2016/05/23 HTML / CSS
RentCars.com巴西:汽车租赁网站
2016/08/22 全球购物
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
大学生职业生涯规划书模版
2013/12/30 职场文书
报到证丢失证明
2014/01/11 职场文书
自荐信需注意事项
2014/01/25 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
趵突泉导游词
2015/02/03 职场文书
劳动仲裁代理词范文
2015/05/25 职场文书