vue h5页面 解决touchstart,touchmove,touchend,click事件触发产生的问题

当你的需要即要求可以完成触摸事件,又要求有点击事件的时候,我们要搞清楚一个问题,事件触发的排序问题。

1,touchstart>touchmove>touchend>click

2,  touchstart>touchend>click

首先要解决的问题是触摸事件的时候点击事件不要出现(百度一大堆解决方案),看的顺眼那个就用那个,本初我使用的是event.preventDefault()

  <div
            @touchmove.prevent="touchmove"
            @touchend.prevent="touchend"
            @touchstart.prevent="touchstart"
            @click="sample" id="child"
             class="draggable-item" ></div>

我的思路是,触发touchstart方法的时候延迟200毫秒如果是就是触摸事件,否则在touchend里面判断就是点击十点,调用点击事件的方法即可

 touchend(){
      let self = this;
      clearTimeout(self.Loop);
      if (self.Loop !== 0) {
        alert('点击事件')
        this.sample()
      }
      return false;
    },

 touchstart(event){
      let child = document.getElementById('child')
      this.startX = event.targetTouches[0].pageX - child.offsetLeft;
      this.startY = event.targetTouches[0].pageY - child.offsetTop;
      let self = this;
      //执行长按的内容
      self.Loop = setTimeout(function () {
        self.Loop = 0;
      }, 200);
      return false;
    },

touchmove(){
},
sample(){
console.log('点击事件')
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值