当前位置: 首页 > news >正文

微信小程序——同一控件的点击与长按事件共存的解决方案

在这里插入图片描述

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:Java Fans的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:微信小程序学习分享
✨特色专栏:国学周更-心性养成之路
🥭本文内容:微信小程序——实现手机振动效果

文章目录

    • 前言
    • 方案一:使用bindtap和bindlongtap两个事件绑定不同的函数
    • 方案二:使用一个变量来判断事件类型

在这里插入图片描述

前言

  对于同一个控件,我们有时候需要实现两种事件效果,比如一个控件的点击事件与长按事件,我们通过一个按钮去实现,下面提供两种解决方案,供博友们学习使用。

方案一:使用bindtap和bindlongtap两个事件绑定不同的函数

  使用bindtap和bindlongtap两个事件绑定不同的函数:可以在控件上同时绑定bindtap和bindlongtap两个事件,分别对应点击和长按事件。

  但是对于同一控件同时设置 bindtap 和 bindlongtap ,会发现长按时先出现 bindlongtap 的事件,然后触发点击事件,显然这不是我们想要的。所以我这边将方法进行了修改,例如:

//需要触发的组件
<view bindtouchstart="onTouchStart" bindtouchend="onTouchEnd" bindlongpress="onLongPress" bindtap="onClick">点击或长按</view>

  在对应的Page或Component的js文件中,定义onTap和onLongTap两个函数处理点击和长按事件:

Page({ data: { },/* * 事件处理 */// 点击事件onClick: function(e) { //如果长按时间小于350则证明是用户进行点击if (this.endTime - this.startTime < 350) { console.log("点击");}},// 长按事件onLongPress: function(e) { console.log("长按");},// 手指触摸开始(不会触发)// 请勿删除代码onTouchStart: function(e) { this.startTime = e.timeStamp;},// 手指触摸结束(不会触发)// 请勿删除代码onTouchEnd: function(e) { this.endTime = e.timeStamp;},
})

方案二:使用一个变量来判断事件类型

  可以在控件上只绑定一个事件,例如bindtap,然后在事件处理函数中使用一个变量来判断触发的是点击还是长按事件。例如:

<view bindtap="onTapLongTap">点击或长按</view>

  在对应的Page或Component的js文件中,定义onTapLongTap函数,使用event.type属性来判断事件类型,决定执行点击或长按的逻辑:

Page({onTapLongTap: function(event) {if (event.type === 'tap') {// 点击事件处理逻辑console.log('点击事件');} else if (event.type === 'longpress') {// 长按事件处理逻辑console.log('长按事件');}}
})

  这两种方式都可以实现同一控件的点击与长按事件共存。根据项目需求,选择适合的方式进行处理。


  码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

在这里插入图片描述

http://www.lryc.cn/news/99205.html

相关文章:

  • selenium自动化-获取元素属性信息
  • LabVIEW开发小型减阻试验平台
  • 解决分类任务中数据倾斜问题
  • Vue3 word如何转成pdf代码实现
  • fpga--流水灯
  • 51单片机:数码管和矩阵按键
  • Django + Xadmin 数据列表复选框显示为空,怎么修复这个问题?
  • 《向量数据库指南》——Milvus Cloud2.2.12 易用性,可视化,自动化大幅提升
  • Python web实战 | 用 Flask 框架快速构建 Web 应用【实战】
  • 十、数据结构——链式队列
  • Improving Cross-Modal Retrieval with Set of Diverse Embeddings
  • 物联网阀控水表计量准确度如何?
  • 【C语言数据结构】模拟·顺序表·总项目实现
  • 自然语言处理从入门到应用——LangChain:模型(Models)-[文本嵌入模型Ⅰ]
  • 使用Gradio构建生成式AI应用程序; Stability AI推出Stable Diffusion XL 1.0
  • Java 递归计算斐波那契数列指定位置上的数字
  • ai数字人透明屏的应用场景有哪些?
  • 一、1、Hadoop的安装与环境配置
  • 剑指YOLOv7改进最新MPDIoU损失函数(23年7月首发论文):论文实测YOLOv7模型涨点,超越现有多种G/D/C/EIoU,高效准确的边界框回归的损失
  • 前端JavaScript面试100问(上)
  • C语言第九课------------------数组----------------C中之将
  • MySQL的安装
  • 在Chrome(谷歌浏览器)中安装Vue.js devtools开发者工具及解决Vue.js not detected报错
  • 用Python实现概率矩阵分解(PMF)算法在MovieLens ml-100k数据集上构建精确的推荐系统:深入理解GroupLens数据的操作
  • WPF icon的设置
  • 使用frp中的xtcp映射穿透指定服务实现不依赖公网ip网速的内网穿透p2p
  • 2023-07-28 LeetCode每日一题(并行课程 III)
  • 8.11 PowerBI系列之DAX函数专题-TopN中实现N的动态
  • 后端性能测试的类型
  • 关闭Tomcat的日志输出