移动端touch事件和click事件的区别

1.touch事件

touchstart: 手指放到屏幕上时触发

touchmove: 手指在屏幕上滑动式触发

touchend:    手指离开屏幕时触发

touchcancel: 系统取消touch事件的时候触发,这个好像比较少用

2.touch事件和click事件的区别 

在移动端,手指点击一个元素,会经过:touchstart --> touchmove --> touchend --> click

touchstart和click的触发条件就有区别

1.touchstart:在这个dom(或冒泡到这个dom,这当然是废话)上手指触摸开始即能触发
2.click:在这个dom(或冒泡到这个dom,这当然是废话)上手指触摸开始,且手指未曾在屏幕上移动(某些浏览器允许移动一个非常小的位移值),且在这个在这个dom上手指离开屏幕,且触摸和离开屏幕之间的间隔时间较短(某些浏览器不检测间隔时间,也会触发click)才能触发
于是我们可以看到,完全用touchstart代替是不太可取的,但是click在移动手持设备上带来的延迟也是一个问题
3.验证touchstart和click事件,看谁先触发。

html

<style>
  .content{
   	height:500px;
    background:#F00;
  }
</style>
<div class="content"></div>

 js

var content = document.querySelector(".content");
content.addEventListener("touchend", function(){
     content.style.background = "#0F0";
});
content.addEventListener("click", function(){
     content.style.background = "#00F";
});

上面逻辑是给content类名的div,绑定一个touch事件和一个click事件。分别让div的背景色变成绿色和蓝色。

手机测试一下,点击一下,div是先变成绿色然后又变成蓝色。

4.只触发touch事件,不去触发click事件

 发现了preventDefault()的方法,阻止事件的默认行为。

<span style="color:#333333;">var content = document.querySelector(".content");
content.addEventListener("touchstart", function(e){
    </span><span style="color:#ff0000;">   e.preventDefault();</span><span style="color:#333333;">
       content.style.background = "#0F0";
})
content.addEventListener("click", function(e){
        content.style.background = "#00F";
});</span>

通过 preventDefault()方法,可以阻止后面事件的触发。
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山楂树の

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值