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

事件

常见的事件有:

类型 触发条件 最低版本
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 设备,重按时会触发  

有两个注意点

 Touchcancle: 在某些特定场景下才会触发(比如来电打断等)? tap事件和longpress事件通常只会触发其中一个 

tap 点击事件

当视图层发生事件时,某些情况需要事件携带一些参数到执行的函数中, 这个时候就可以通过

data-属性来完成:

1 格式:data-属性的名称

2 获取:e.currentTarget.dataset.属性的名称

eg:

test.wxml
# tap 点击事件
<button bind:tap=‘click‘ data-name="{{name}}" data-age="20">按钮</button>
test.js
Page({
  data: {
    name: ‘word‘,
  },
  click: function (e) {
    // 参数 e 是整个事件
    console.log(e)  // 打印整个事件
    // 从事件中获取传递的参数
    const data = e.currentTarget.dataset;
    console.log(data)  // 打印 dataset 的值
  },
)
// 参数 e 是整个事件
// 事件传递的参数都在 currentTarget.dataset 中

touches和changedTouches的区别

事件传递与冒泡

test.js
page({
   click1: function () {

    console.log("外面的")
  },
  click2: function () {

    console.log("中间的")
  }
  , click3: function () {

    console.log("里面的")
  },
  cap1: function () {

    console.log("传递,外面的")
  },
  cap2: function () {

    console.log("传递,中间的")
  }
  , cap3: function () {

    console.log("传递,里面的")
  },
})

传递 capture-bind:tap="cap1"

test.wxml
<!--事件传递-->
<view class="outer" capture-bind:tap="cap1">外面
  <view class="midder" capture-bind:tap="cap2">中间的
      <view class="inner" capture-bind:tap="cap3">里面
      </view>
  </view>
</view>

冒泡 bind:tap="click1"

<!--事件冒泡-->
<view class="outer" bind:tap="click1" >外面
  <view class="midder" bind:tap="click2" >中间的
    <view class="inner" bind:tap="click3" >里面
    </view>
  </view>
</view>

阻止事件传递与冒泡 catch

<!--阻止事件传递与冒泡-->
<view class="outer" bind:tap="click1" capture-bind:tap="cap1">外面
  <view class="midder" catch:tap="click2" capture-bind:tap="cap2">中间的
      <view class="inner" bind:tap="click3" capture-catch:tap="cap3">里面
      </view>
  </view>
</view>

注: 摘自 小猿取经

原文地址:https://www.cnblogs.com/waller/p/11794768.html

时间: 2024-11-03 22:32:57

微信小程序 - 事件 | 传递 | 冒泡的相关文章

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

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

App打开微信小程序并传递参数

在App中打开小程序的功能发布有一段时间了,网上关于这个的新闻很多,但是技术资料并不多,我们有项目需要尝试这种方式,特意试了一下,发现还是有一些坑,分享给大家. 首先微信官方文档在微信.开放平台上,截图如下: 一. 开发前先得做好几个准备工作: 在微信开放平台上有账号而且有通过的移动应用. 2.在微信公众平台有账号而且有小程序,最好发布为体验版本. 3.在微信开放平台把对应的移动应用和小程序建立关联.这个过程来回需要登陆和扫二维码n次. 二. 在android和ios调试官方sample打开小程

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

本文以冒泡事件tap(手指触摸后马上离开,也就是点击事件)为例子来区别bind和catch事件.在小程序中事件分为冒泡事件和非冒泡事件: bindtap  事件绑定不会阻止冒泡事件向上冒泡 catchtap  事件绑定可以阻止冒泡事件向上冒泡 假如有三个view点击事件都是用的bindtap,三个view是层级包含关系 <view id="outer" bindtap="out"> outer view <view id="middle&

微信小程序事件

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

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

事件类别: 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:

微信小程序视图层WXML_事件

微信小程序视图层WXML_小程序事件 什么是微信小程序事件 小程序事件是视图层到逻辑层的通讯方式. 小程序事件可以将用户的行为反馈到逻辑层进行处理. 小程序事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数. 小程序事件对象可以携带额外信息,如id, dataset, touches. 微信小程序事件的使用方式 在小程序组件中绑定一个事件处理函数. 如bindtap,当用户点击该组件的时候会在该微信小程序页面对应的Page中找到相应的事件处理函数. <view id="

微信小程序视图层WXML_小程序事件

微信小程序视图层WXML_小程序事件 什么是微信小程序事件 小程序事件是视图层到逻辑层的通讯方式. 小程序事件可以将用户的行为反馈到逻辑层进行处理. 小程序事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数. 小程序事件对象可以携带额外信息,如id, dataset, touches. 微信小程序事件的使用方式 在小程序组件中绑定一个事件处理函数. 如bindtap,当用户点击该组件的时候会在该微信小程序页面对应的Page中找到相应的事件处理函数. <view id="

微信小程序-双击长按longtap事件与tap事件冲突的解决办法

对于微信事件,不多说,自己看文档https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxml/event.html?t=20161122 效果 首先,注意一下微信小程序事件触发顺序     单击 touchstart → touchend → tap 双击 touchstart → touchend → tap → touchstart → touchend → tap 长按 touchstart → longtap → touche