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

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。

🍎个人主页:Java Fans的博客

🍊个人信条:不迁怒,不贰过。小知识,大智慧。

💞当前专栏:微信小程序学习分享

✨特色专栏:国学周更-心性养成之路

🥭本文内容:微信小程序------实现手机振动效果

文章目录

前言

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

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

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

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

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

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

javascript 复制代码
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,然后在事件处理函数中使用一个变量来判断触发的是点击还是长按事件。例如:

html 复制代码
<view bindtap="onTapLongTap">点击或长按</view>

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

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

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


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

相关推荐
一颗小青松21 分钟前
uniapp app端显示天气详情
uni-app
计算机徐师兄32 分钟前
Java基于微信小程序的食堂线上预约点餐系统【附源码、文档说明】
java·微信小程序·食堂线上预约点餐系统小程序·食堂线上预约点餐微信小程序·java食堂线上预约点餐小程序·食堂线上预约点餐小程序·食堂线上预约点餐系统微信小程序
Swift社区14 小时前
H5 与 ArkTS 通信的完整设计模型
uni-app·harmonyos
说私域17 小时前
短视频私域流量池的变现路径创新:基于AI智能名片链动2+1模式S2B2C商城小程序的实践研究
大数据·人工智能·小程序
小溪彼岸18 小时前
uni-app小白从0开发一款鸿蒙Next应用到上线
uni-app·harmonyos
毕设源码-邱学长19 小时前
【开题答辩全过程】以 基于微信小程序的松辽律所咨询系统的设计与实现为例,包含答辩的问题和答案
微信小程序·小程序
一颗小青松19 小时前
uniapp app端使用uniCloud的unipush
uni-app
+VX:Fegn089521 小时前
计算机毕业设计|基于springboot + vue物流配送中心信息化管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·小程序·课程设计
说私域21 小时前
B站内容生态下的私域流量运营创新:基于AI智能名片链动2+1模式与S2B2C商城小程序的融合实践
人工智能·小程序·流量运营
计算机毕设指导621 小时前
基于微信小程序的钓鱼论坛系统【源码文末联系】
java·spring boot·mysql·微信小程序·小程序·tomcat·maven