zoukankan      html  css  js  c++  java
  • 小程序开发

    要实现双击的基本思路,就是通过touch来记录时间,然后通过最后一次点击时间减去touch的时间,如果时间小于300,就是双击时间,否则就是单击时间

    1.首先,需要在js中定义几个变量

      // 触摸开始时间
      touchStartTime: 0,
      // 触摸结束时间
      touchEndTime: 0,  
      // 最后一次单击事件点击发生时间
      lastTapTime: 0, 
      // 单击事件点击后要触发的函数
      lastTapTimeoutFunc: null, 

    2.触摸事件的函数

      /// 按钮触摸开始触发的事件
      touchStart: function(e) {
        this.touchStartTime = e.timeStamp
      },
     
      /// 按钮触摸结束触发的事件
      touchEnd: function(e) {
        this.touchEndTime = e.timeStamp
      },

    3.在界面中需要绑定点击事件的地方,需要加入bindtouchstart 和bindtouchend,以便记录下按钮开始触摸和结束触摸的时间。其他的分别绑定好单击、双击、长按事件就好了。

    <view class = "btn" bindtap="multipleTap" bindlongtap="longTap" bindtouchstart="touchStart" bindtouchend="touchEnd">
        单击/双击/长按
    </view>

    4.单击、双击和长按同时存在的实现:

      /// 长按
      longTap: function(e) {
        console.log("long tap")
        wx.showModal({
          title: '提示',
          content: '长按事件被触发',
          showCancel: false
        })
      },
     
      /// 单击、双击
      multipleTap: function(e) {
        var that = this
        // 控制点击事件在350ms内触发,加这层判断是为了防止长按时会触发点击事件
        if (that.touchEndTime - that.touchStartTime < 350) {
          // 当前点击的时间
          var currentTime = e.timeStamp
          var lastTapTime = that.lastTapTime
          // 更新最后一次点击时间
          that.lastTapTime = currentTime
          
          // 如果两次点击时间在300毫秒内,则认为是双击事件
          if (currentTime - lastTapTime < 300) {
            console.log("double tap")
            // 成功触发双击事件时,取消单击事件的执行
            clearTimeout(that.lastTapTimeoutFunc);
            wx.showModal({
              title: '提示',
              content: '双击事件被触发',
              showCancel: false
            })
          } else {
            // 单击事件延时300毫秒执行,这和最初的浏览器的点击300ms延时有点像。
            that.lastTapTimeoutFunc = setTimeout(function () {
              console.log("tap")
              wx.showModal({
                title: '提示',
                content: '单击事件被触发',
                showCancel: false
              })
            }, 300);
          }
        }
      },

    参考链接:https://blog.csdn.net/h330531987/article/details/80651139

  • 相关阅读:
    如何:创建自定义 HTTP 模块
    [转]开源邮件系统
    [转]开源.NET邮件服务器
    [转]文件上传及图片水印
    oracle存储过程学习收集|韩顺平oracle视频教程|
    PLSQL自动输入select * from|附件在cnblogs文件|
    oracle有规律数据触发器实现递增(NC地区分类)|更新一路case简化|
    oracle中的几种循环|转|
    官方解释sqlplus /nolog conn /as sysdba无密码可登陆
    建工项目对账查询引擎sql
  • 原文地址:https://www.cnblogs.com/cap-rq/p/10303169.html
Copyright © 2011-2022 走看看