小程序 鼠标事件

微信小程序鼠标事件

事件分类

事件分为冒泡事件和非冒泡事件: 
1. 冒泡事件(bind):当一个组件上的事件被触发后,该事件会向父节点传递。 
2. 非冒泡事件(catch):当一个组件上的事件被触发后,该事件不会向父节点传递。 
bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡。

WXML的冒泡事件列表

类型 触发条件
touchstart 手指触摸动作开始
touchmove 手指触摸后移动
touchcancel 手指触摸动作被打断,如来电提醒,弹窗
touchend 手指触摸动作结束
tap 手指触摸后马上离开
longtap 手指触摸后,超过350ms再离开

冒泡讲解

<view id="outter" bindtap="handleTap1">
    outer view
    <view id="middle" catchtap="handleTap2">
        middle view
        <view id="inner" bindtap="handleTap3">
            inner view
        </view>
    </view>
</view>

点击inner view后只触发handleTap3,然后再触发handleTap2.不触发handleTap1。 
因为handleTap2中的绑定类型是catch,阻止了冒泡事件。

返回对象

BaseEvent 基础事件对象属性列表:

属性 类型 说明
type String 事件类型
timeStamp Integer 事件生成时的时间戳
target Object 触发事件的组件的一些属性值集合
currentTarget Object 当前组件的一些属性值集合

type

代表事件的类型。

timeStamp

页面打开到触发事件所经过的毫秒数。

target

触发事件的源组件。

属性 类型 说明
id String 事件源组件的id
tagName String 当前组件的类型
dataset Object 事件源组件上由data-开头的自定义属性组成的集合
dataset

在组件中可以定义数据,这些数据将会通过事件传递给 SERVICE。 书写方式: 以data-开头,多个单词由连字符-链接,不能有大写(大写会自动转成小写)如data-element-type,最终在 event.currentTarget.dataset 中会将连字符转成驼峰elementType。

示例: 
<view data-alpha-beta="1" data-alphaBeta="2" bindtap="bindViewTap"> DataSet Test </view>

Page({
  bindViewTap:function(event){
    event.currentTarget.dataset.alphaBeta === 1 // - 会转为驼峰写法
    event.currentTarget.dataset.alphabeta === 2 // 大写会转为小写
  }
})

CustomEvent 自定义事件对象属性列表(继承 BaseEvent):

属性 类型 说明
detail Object 额外的信息

detail

自定义事件所携带的数据,如表单组件的提交事件会携带用户的输入,媒体的错误事件会携带错误信息,详见组件定义中各个事件的定义。

点击事件的detail 带有的 x, y 同 pageX, pageY 代表距离文档左上角的距离。

TouchEvent 触摸事件对象属性列表(继承 BaseEvent):

属性 类型 说明
touches Array 触摸事件,当前停留在屏幕中的触摸点信息的数组
changedTouches Array 触摸事件,当前变化的触摸点信息的数组

touches

touches 是一个数组,每个元素为一个 Touch 对象(canvas 触摸事件中携带的 touches 是 CanvasTouch 数组)。 表示当前停留在屏幕上的触摸点。

Touch 对象
属性 类型 说明
identifier Number 触摸点的标识符
pageX, pageY Number 距离文档左上角的距离,文档的左上角为原点 ,横向为X轴,纵向为Y轴
clientX, clientY Number 距离页面可显示区域(屏幕除去导航条)左上角距离,横向为X轴,纵向为Y轴

changedTouches

changedTouches 数据格式同 touches。 表示有变化的触摸点,如从无变有(touchstart),位置变化(touchmove),从有变无(touchend、touchcancel)。

特殊事件: <canvas/> 中的触摸事件不可冒泡,所以没有 currentTarget。

bindtap

程序代码

<view id="tapTest" data-hi="WeChat" bindtap="tapName"> Click me! </view>

对应的js

Page({
  tapName: function(event) {
    console.log(event)
  }
})
{
"type":"tap",
"timeStamp":895,
"target": {
  "id": "tapTest",
  "dataset":  {
    "hi":"WeChat"
  }
},
"currentTarget":  {
  "id": "tapTest",
  "dataset": {
    "hi":"WeChat"
  }
},
"detail": {
  "x":53,
  "y":14
},
"touches":[{
  "identifier":0,
  "pageX":53,
  "pageY":14,
  "clientX":53,
  "clientY":14
}],
"changedTouches":[{
  "identifier":0,
  "pageX":53,
  "pageY":14,
  "clientX":53,
  "clientY":14
}]
}

可以看到,返回的type是tap 
同时在target.id节点中也可以看到 对应的id 
在a.target.dataset.hi中也可以找到对应的data-id的值(data-hi → hi)

原文地址:https://www.cnblogs.com/dianzan/p/8323485.html

时间: 2024-10-07 12:25:45

小程序 鼠标事件的相关文章

小程序开发--小程序的事件机制

首先在小程序中,如果要实现点击操作,是没有click事件,在官方api文档中,给我们提供了tap事件来表示用户短暂点击后手指离开. 而如果我们要监听这个事件,并且在这个事件上绑定一个方法,就要在在相应的事件前面直接添加一个bind或者catch,如bindtap="onTapFn"或者catchtap="onTapFn".而bind和catch的区别在于:bind只是单纯地绑定一个事件,catch则是绑定事件的同时还阻止了事件冒泡. 那么对于小程序来说,主要有三类事

微信小程序Dom事件实现

面对微信小程序,可能没有像我们平时使用JQuery那样随心所欲.本篇就是为了解决这个问题. 请合理使用工具! 细节就不说了,直接备份一个实现的案例: wxml <view class="guess" > <view> <image data-data_auto = "{{ac[index]}}" data-index="{{index}}" data-num="1" data-id="{

微信小程序页面事件-下拉刷新,上拉加载更多

1.下拉刷新的概念及应用场景. 概念: 下拉刷新是移动端更新列表数据的交互行为,用户通过手指在屏幕上子上而下的滑动,可以触发页面的下拉刷新,更新列表数据. 应用场景: 在移动端,数据列表是常见的页面效果,更新列表数据是最基本的页面需求,相比于按钮刷新,定时刷新来说,下拉刷新的用户体验方便友好,已经成为移动端刷新列表数据的最佳解决方案. 微信小程序启动下拉刷新: 两种方式: 1.需要在app.json 的window选项中或页面配置中开启enablePullDownRefresh, 但是,一般情况

小程序绑定事件,点击不跳转的问题

今天在做小程序的时候,遇到一个点击不跳转的问题,在首页有一个搜索框,点击之后想让它进入搜索页面,wxhl代码如下: <view class="sear"> <input class="input" placeholder="请输入你要搜索的商品" bindtap="search"/> </view> 给input框绑定一个search事件,js里面代码如下: search: function

小程序转发事件生命周期

1 Invoke event onShareAppMessage in pages: pages/XXX // 触发onShareAppMessage转发事件 2 pages/XXX: onHide have been invoked // 页面pages onHide()事件 3 App: onHide have been invoked // App onHide()事件 4 转发结果result // 转发的结果(成功或失败),在onShareAppMessage事件的回调函数中 5 Ap

小程序的事件 bindtap bindinput

一.bindtap事件 在wxml文件里绑定: <view class='wel-list' bindtap='TZdown'> <image src="/images/welcome_08.png"></image> <text>C语言资料下载</text> </view> 在js文件里相应: Page({ TZdown: function () { wx.navigateTo({ url: '../downlo

小程序之事件总线

一.主要原理 我把一些会被多个页面调用的事件放到一个集合里面,以事件名称为key,以事件及其回调函数的数组为值.大概的形式如下. events={“event_name1”:[[o11,callback11],[o12,callback12]],"event_name2":[[o21,callback21],[o22,callback22]]} 然后其他的页面就可以从这个池子(集合)里面通过事件名称找到对应的事件元素,拿到他的callback函数,进行调用了. 二.主要代码 事件总线的

微信小程序常用事件

bind bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡. bindtap  跳转页面 bindchange  .value 改变时触发 change 事件 bindblur. 编辑器失去焦点时触发 bindinput  . 编辑器内容改变时触发 原文地址:https://www.cnblogs.com/ll15888/p/11479933.html

小程序的事件机制--捕捉与回调,catch与bind

产生事件,捕捉事件,回调函数,处理事件 回调函数自己定义,函数写在JS里面 先捕捉事件bind:tap或者catch:tap   冒泡和非冒泡区别 跳转API-----wx.navigateTo,wx.redirectTo表面上区别为跳转后 是否有后退的按钮 组件和API大方向就是学习这两个大方向 原文地址:https://www.cnblogs.com/Zzxin/p/11835201.html