微信小程序 - 事件绑定bind和catch 区别

本文以冒泡事件tap(手指触摸后马上离开,也就是点击事件)为例子来区别bind和catch事件。在小程序中事件分为冒泡事件和非冒泡事件:

bindtap  事件绑定不会阻止冒泡事件向上冒泡

catchtap  事件绑定可以阻止冒泡事件向上冒泡

假如有三个view点击事件都是用的bindtap,三个view是层级包含关系

<view id="outer" bindtap="out">
    outer view
    <view id="middle" bindtap="middle">
        middle view
        <view id="inner" bindtap="inner">
            inner view
        </view>
    </view>
</view>

我么在js里代码是在相对应的事件打印出log,代码如下

out:function(e){
    console.log("--out bindtap click")
},
middle: function (e) {
    console.log("--middle bindtap click")
},
inner: function (e) {
    console.log("--inner bindtap click")
}

点击out view打印出一条log ,--out bindtap click

点击middle view打印出两条log, --middle bindtap click      --out bindtap click

点击innew view打印出两条log,--inner bindtap click   --middle bindtap click      --out bindtap click

可以看出bindtap不阻止向上冒泡,所以点击inner一直冒泡到了最外层。

如果我们修改middle view的bindtap为catchtap

点击out view打印出一条log ,--out bindtap click  (因为没有上层元素故而无法向上冒泡)

点击middle view打印出两条log, --middle bindtap click      (catchtap阻止向上冒泡)

点击innew view打印出两条log,--inner bindtap click   --middle bindtap click      (catchtap阻止向上冒泡)

转自:https://www.cnblogs.com/paul011/p/9039356.html

原文地址:https://www.cnblogs.com/xjy20170907/p/11063802.html

时间: 2024-10-10 09:30:47

微信小程序 - 事件绑定bind和catch 区别的相关文章

微信小程序 --- 事件绑定

事件类别: tap:点击事件: longtap:长按事件: touchstart:触摸开始: touchend:触摸结束: touchcansce:取消触摸: 事件绑定: bind绑定: catch绑定:(能阻止事件冒泡) 例如:绑定点击事件 bindtap page.wxml 文件 <button bindtap="btnclick"></button> page.js 文件 //获取应用实例 const app = getApp() Page({ data:

微信小程序事件绑定

事件类别: tap:点击事件: longtap:长按事件: touchstart:触摸开始: touchend:触摸结束: touchcansce:取消触摸: 事件绑定: bind绑定: catch绑定:(能阻止事件冒泡) 例如:绑定点击事件 bindtap page.wxml 文件 <button bindtap="btnclick"></button> page.js 文件 //获取应用实例 const app = getApp() Page({ data:

微信小程序事件始末及相关资料整理

转载请注明来源:前端之巅 微信公众号 小道消息 昨晚(9月21日晚)10:51,冯大辉在他的知名微信公众号小道消息上发了一篇7字标题的文章<微信应用号来了>,并加了“微信是一个操作系统”这么一句导语,瞬间刷爆尾尾的朋友圈. 微信应用号来了.jpg 冯大辉何许人也?大家可以看下他在2016 GTLC全球技术领导力峰会上的演讲<冯大辉最后一次CTO演讲:如何抓住技术浪潮变革的红利?>感受下. 文章简短,列出了应用号的定义:“微信公众平台提供了一种新的开放能力,开发者可以快速开发一个小程

微信小程序组件——bindtap和catchtap的区别

了解知识点 DOM模型是一个树形结构,在DOM模型中,HTML元素是有层次的.当一个HTML元素上产生一个事件时,该事件会在DOM树中元素节点与根节点之间按特定的顺序传播,路径所经过的节点都会收到该事件,这个传播过程就是DOM事件流. JS冒泡事件:当一个元素上的事件被触发的时候,比如说鼠标点击了一个按钮,同样的事件将会在那个元素的(所有祖先元素)中被触发.这 一过程被称为事件冒泡:这个事件从原始元素开始一直冒泡到DOM树的最上层 共同点 在微信小程序的事件机制中,bindtap和catchta

微信小程序————1wxss和css的部分区别

集成微信提供 的weui进微信小程序wxss 最开始将weui.css 全部复制进入app.wxss里面,发现跑不起来. 搜索了下,常见原因有如下几点: 截止2016.11.14日, wxss和css的部分区别 不支持:first-child这类写法, 不支持:active 不支持:checked 不支持自定义字体 @font-face { font-weight: normal; font-style: normal; font-family: "weui"; .a>.b .a

微信小程序事件

1.事件的类别: 2.事件的冒泡: 冒泡事件:点击子view,会触发父view和父view的父view  <点击,长按,触摸事件都是冒泡事件,其余都是非冒泡事件> 非冒泡事件: 3.事件的绑定: bind绑定: 和他具有同样触发样式的组件都会触发事件. catch绑定:只有自身组件会触发事件. 4.事件的对象: currentTarget: 绑定的组件view的事件 target:发生事件的主键 dataSet:是为了方便我们自己设置组件的属性

微信小程序 - 事件 | 传递 | 冒泡

事件 常见的事件有: 类型 触发条件 最低版本 touchstart 手指触摸动作开始   touchmove 手指触摸后移动   touchcancel 手指触摸动作被打断,如来电提醒,弹窗   touchend 手指触摸动作结束   tap 手指触摸后马上离开   longpress 手指触摸后,超过350ms再离开,如果指定了事件回调函数并触发了这个事件,tap事件将不被触发 1.5.0 longtap 手指触摸后,超过350ms再离开(推荐使用longpress事件代替)   trans

微信小程序的target和currentTarget的区别

https://www.jb51.net/article/160886.htm 在小程序的事件回调触发时,会接收一个事件对象,事件对象的参数中包含一个target和currentTarget属性,接下来说说这二者的区别. 首先上代码: wxml部分: ? 1 2 3 4 <view id='tar-father' bindtap='click'>   父组件   <view id='tar-children'>子组件</view>  </view> wxss

原创:微信小程序bindtap绑定html元素点击事件

什么是事件? 事件是视图层到逻辑层的通讯方式. 事件可以将用户的行为反馈到逻辑层进行处理. 详解(以常见的tap点击事情为例) 模板.wxml代码: <view id="tapTest" data-hi="WeChat" bindtap="tapName"> Click me! </view> JS文件代码: Page({ data:{ ... }, onload:function(){ ... }, tapName: f