微信小程序-touches和changedTouches
1.小程序开发概述2.创建第一个小程序3.微信小程序app.json文件4.微信小程序-sitemap.json文件5.微信小程序app.js文件6.微信小程序app.wxss文件7.微信小程序-project.config.json文件8.微信小程序-页面.json文件9.微信小程序-页面.js文件10.微信小程序-组件创建和使用11.微信小程序-组件-.json文件12.微信小程序-组件-.js文件13.微信小程序-WXSS学什么14.微信小程序-WXSS的书写格式15.微信小程序-新增RPX响应式单位16.微信小程序-什么是WXML17.微信小程序-WXML数据绑定18.微信小程序-WXML条件渲染19.微信小程序-WXML的hidden属性20.微信小程序-WXML列表渲染21.微信小程序-WXML列表渲染Key22.微信小程序-WXML包装元素23.微信小程序-WXS的作用和使用24.微信小程序-WXS独立文件25.微信小程序-WXS支持的语法26.微信小程序-小程序事件绑定27.微信小程序-小程序事件冒泡和事件捕获28.微信小程序-事件传递数据29.微信小程序-data和mark
30.微信小程序-touches和changedTouches
31.微信小程序-案例练习32.微信小程序-view组件33.微信小程序-text组件34.微信小程序-icon组件35.微信小程序-button组件36.微信小程序-image组件37.微信小程序-scrollview38.微信小程序-image组件-选择相册资源案例39.微信小程序-自定义组件40.微信小程序-自定义组件样式隔离41.微信小程序-自定义组件外部样式42.微信小程序-传递数据父传子43.微信小程序-传递数据子传父44.微信小程序-页面访问组件数据和方法45.微信小程序-组件通讯练习46.微信小程序-单个插槽47.微信小程序-多个插槽-具名插槽48.微信小程序-behaviors49.微信小程序-双线程渲染模型50.微信小程序-页面生命周期51.微信小程序-页面生命周期方法52.微信小程序-组件生命周期方法53.微信小程序-应用程序生命周期方法54.微信小程序-页面跳转Tabbar55.微信小程序-页面跳转navigator组件56.微信小程序-页面跳转wxAPI57.微信小程序-页面跳转数据传递58.微信小程序-常用弹窗59.微信小程序-Storage60.微信小程序-获取用户位置在经过上一篇文章的介绍,已经清楚的了解了data与mark的区别,本章将要介绍的也是事件对象当中的两个属性,分别是,touches与changedTouches。
首先我们先搭建一个案例,运行这个案例看输出的事件对象当中,这个两个属性分别保存的是什么内容。
index.wxml:
<view bind:tap="onTap">我是View</view>
index.js:
Page({
onTap: function(event){
console.log(event)
}
})
输出结果:
changedTouches: [{…}]
currentTarget: {id: "", offsetLeft: 0, offsetTop: 0, dataset: {…}}
detail: {x: 43, y: 12.75}
mark: {}
mut: false
target: {id: "", offsetLeft: 0, offsetTop: 0, dataset: {…}}
timeStamp: 332421
touches: [{…}]
type: "tap"
_userTap: true
这里我们发现,这两个属性分别保存的是数组, 可以看出是多个内容,具体是什么内容,就要从他们之间的区别开始说起。
touches和changedTouches的区别
看区别之前,我们来看看他们的作用分别是什么:
?> 作用:保存当前操作元素的手指数据(pageXY/ClientXY按下的数据)
区别:
-
如果只有一根手指操作,那么没有任何的区别(两个属性存放的值是一样的)
-
如果是多根手指操作,那么
有可能
有区别(因为两个属性存储的数据类型是数组) -
如果是多根手指同时按下,那么没有区别(两个属性存放的值是一样的)
-
touches中保存的是所有按下的手指
-
changedTouches中保存的是发生变化的手指
例如:目前有三根手指,一根先按下,另外两根后按下:
- 那么 touches 中保存的就是三根手指的位置
- 那么 changedTouches 中保存的就是后按下的那两根手指位置
最后举例的这个证明,也是可以证明的,我们可以使用 touchend
事件来进行演示即可更改代码:
index.wxml:
<view bind:touchend="onTouchend">我是View</view>
运行结果:
changedTouches: [{…}]
currentTarget: {id: "", offsetLeft: 0, offsetTop: 0, dataset: {…}}
detail: {}
mark: {}
mut: false
target: {id: "", offsetLeft: 0, offsetTop: 0, dataset: {…}}
timeStamp: 863392
touches: []
type: "touchend"
_requireActive: false
_userTap: false
我们可以看到 touches
存放的是空,为什么是空呢,因为我们使用的是手指触碰结束事件,我们没有手指点击,就等于没有实际的手指点击,因为我们点击之后立马松开手指,这个时候我们的changedTouches监听到了发生变化,就保存了这个数据。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
2022-04-21 博客园