js 监听移动端web触屏事件 滑动响应

直接上例子,以vue应用为例:

html:

 <ul>
      <li v-for="item in items" :class="{finished:item.isFinished}" @click="toggleFinish(item)"
      @touchstart="touchstart()" @touchmove="touchmove(item)">
        {{item.label}}
        <label class="deleteLabel" v-show="item.deleteShow" @click="deleteOne($index)">×</label>
      </li>
   </ul>


js:

    touchstart: function () {
      var e = window.event;
      // e.preventDefault();
      startX = e.targetTouches[0].pageX;
      startY = e.targetTouches[0].pageY;

    },
    touchmove: function (item) {
      var e = window.event;
      // e.preventDefault(); // 阻止浏览器默认事件
      moveEndX = e.targetTouches[0].pageX;
      moveEndY = e.targetTouches[0].pageY;

      X = moveEndX - startX;
      Y = moveEndY - startY;

      if (Math.abs(X) > 120 && Math.abs(X) > Math.abs(Y) && X > 0) {
        if(item.deleteShow == true){
          console.log("右滑事件");
          item.deleteShow = false;
        };
      } else if (Math.abs(X) > 120 && Math.abs(X) > Math.abs(Y) && X < 0) {
        if(item.deleteShow == false){
          for(var i=0;i<this.items.length;i++){
            if(this.items[i].deleteShow == true){
              this.items[i].deleteShow = false;
            }
          };
          console.log("左滑事件");
          item.deleteShow = true;
        }
      }
    }


-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

jquery可参考:

转自:浅谈移动端之touch事件--手指的滑动事件

$("body").on("touchstart", function(e) {
    e.preventDefault();
    startX = e.originalEvent.changedTouches[0].pageX,
    startY = e.originalEvent.changedTouches[0].pageY;
});
$("body").on("touchmove", function(e) {
    e.preventDefault();
    moveEndX = e.originalEvent.changedTouches[0].pageX,
    moveEndY = e.originalEvent.changedTouches[0].pageY,
    X = moveEndX - startX,
    Y = moveEndY - startY;
      
    if ( Math.abs(X) > Math.abs(Y) && X > 0 ) {
        alert("left 2 right");
    }
    else if ( Math.abs(X) > Math.abs(Y) && X < 0 ) {
        alert("right 2 left");
    }
    else if ( Math.abs(Y) > Math.abs(X) && Y > 0) {
        alert("top 2 bottom");
    }
    else if ( Math.abs(Y) > Math.abs(X) && Y < 0 ) {
        alert("bottom 2 top");
    }
    else{
        alert("just touch");
    }
});



转载于:https://www.cnblogs.com/fifteen718/p/9533896.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值