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


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分页函数代码
Sep 10 Javascript
javascript中的关于类型转换的性能优化
Dec 14 Javascript
关于JavaScript与HTML的交互事件
Apr 12 Javascript
JS图片无缝滚动(简单利于使用)
Jun 17 Javascript
Javascript实现获取窗口的大小和位置代码分享
Dec 04 Javascript
JavaScript实现网页加载进度条代码超简单
Sep 21 Javascript
浅谈Javascript中Object与Function对象
Sep 26 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
Oct 09 Javascript
Javascript OOP之面向对象
Jul 31 Javascript
详解Angular调试技巧之报错404(not found)
Jan 31 Javascript
Vue实现点击当前行变色
Dec 14 Vue.js
解决vue使用vant轮播组件swipe + flex时文字抖动问题
Jan 07 Vue.js
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
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
2019/04/23 PHP
jQuery 使用手册(四)
2009/09/23 Javascript
JavaScript 未结束的字符串常量常见解决方法
2010/01/24 Javascript
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
2011/09/28 Javascript
jQuery prev ~ siblings选择器使用介绍
2013/08/09 Javascript
javascript基于DOM实现权限选择实例分析
2015/05/14 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
使用JQuery选择HTML遍历函数的方法
2016/09/17 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
jQuery html表格排序插件tablesorter使用方法详解
2017/02/10 Javascript
配置nodejs环境的方法
2017/05/13 NodeJs
AngularJS使用ng-class动态增减class样式的方法示例
2017/05/18 Javascript
js下拉菜单生成器dropMenu使用方法详解
2017/08/01 Javascript
ES6学习笔记之map、set与数组、对象的对比
2018/03/01 Javascript
vue下history模式刷新后404错误解决方法
2018/08/18 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
JavaScript定时器常见用法实例分析
2019/11/15 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
2020/08/04 Javascript
python 获取et和excel的版本号
2009/04/09 Python
浅析Python中的for 循环
2016/06/09 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
Python如何访问字符串中的值
2020/02/09 Python
Python多线程threading join和守护线程setDeamon原理详解
2020/03/18 Python
css3实现背景模糊的三种方式(小结)
2020/05/15 HTML / CSS
css3实现平移效果(transfrom:translate)的示例
2020/11/13 HTML / CSS
使用Html5、CSS实现文字阴影效果
2018/01/17 HTML / CSS
岗位职责定义及内容
2013/11/08 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
市场开发计划书
2014/05/07 职场文书
授权委托书范文
2014/07/31 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
医院财务人员岗位职责
2015/04/14 职场文书
淮海战役观后感
2015/06/11 职场文书
浅谈CSS不规则边框的生成方案
2021/05/25 HTML / CSS