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

1.touch事件
以下是四种touch事件
touchstart: //手指放到屏幕上时触发
touchmove: //手指在屏幕上滑动式触发
touchend: //手指离开屏幕时触发
touchcancel: //系统取消touch事件的时候触发,这个好像比较少用
每个触摸事件被触发后,会生成一个event对象

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
[html] view plain copy

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

js
[javascript] view plain copy

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()的方法,阻止事件的默认行为。
[javascript] view plain copy

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.touch事件以下是四种touch事件 2.touch事件和click事件的区别 在移动端,手指点击一个元素,...
    LIsPeri阅读 3,321评论 0 2
  • 上周做了一个项目,发现一个DOM元素触发touch事件,竟然还会触发别的元素的click事件。 我先描述一下,当时...
    晨光2016阅读 8,691评论 0 0
  • 基于html5的移动web页面搭建技术总结1.技术要点1.1面向不同尺寸的手机屏幕,页面布局适配问题。 网页的he...
    敲代码的张阅读 2,695评论 0 0
  • 在现代装修居住空间里面,有沙发的地方似乎总也少不了茶几的身影。尤其在现代客厅里,一款实用、时尚的茶几与沙发在一起能...
    苏黎安阅读 4,447评论 1 6
  • 踽踽独行于人海三千 余勇不足以说出一句“再见” 玻璃幕墙映出陌生自己的憔悴 青鸾不落无情处 少女情怀总是痴 思念如...
    薄小荷阅读 3,395评论 8 2

友情链接更多精彩内容