转载,并非原创;
原文地址: http://blog.csdn.net/lululove19870526/article/details/44345759
移动端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
- <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>
相关推荐
Vue自定义移动端Touch事件之点击、滑动、长按事件 在移动端开发中,Touch事件是非常重要的一部分,我们经常需要监听用户的触摸操作,如点击、滑动、长按等。Vue框架提供了多种方式来处理Touch事件,但是在实际开发...
这是因为这两个库提供了丰富的DOM操作接口和事件处理机制,可以方便地与touch.js的事件系统集成。首先,你需要在页面中引入这两个库(如果选择使用jQuery,记得确保引入的是其移动端版本),然后引入百度touch.js。...
这样可以确保touchend事件和click事件按照预期触发。 - 实现示例:可以使用setTimeout函数设置一个短暂的延迟,例如300ms,之后再执行隐藏或移除操作。 #### 示例代码 下面是一个简单的示例,展示了如何使用...
本文从移动端事件基础讲起,详细介绍了移动事件和PC端事件的区别,以及如何处理移动端特有的TOUCH事件和GESTURE事件。针对移动端click事件的延迟问题,提供了通过TOUCH事件模拟click和使用fastclick.js库的解决方案...
在JavaScript中,`touchstart`事件和`click`事件在移动设备上可能存在冲突,这个问题主要出现在需要同时兼容PC和移动设备的Web应用中。在移动设备上,由于触摸屏的操作特性,`touchstart`事件在用户手指触碰屏幕时...
如果浏览器支持触屏,那么调用`touch`事件处理函数,否则调用`click`事件处理函数。在Vue.js中,可以如下实现: ```html <li class="item" v-for="item of letters" :key="item" :ref="item" @click=...
在Vue.js开发中,特别是在构建移动端应用时,`touch` 和 `click` 事件的共存问题是一个常见的挑战。在手机设备上,用户通常通过触摸屏幕进行交互,这涉及到 `touch` 事件序列(`touchstart`、`touchmove` 和 `...
本文将深入探讨移动端的基础事件,主要包括触摸事件和设备加速度事件。了解并掌握这些事件,能够帮助开发者创建更丰富的用户体验。 1. 触摸事件 触摸事件是移动端特有的事件,它们对应于用户的触摸屏幕操作。触摸...
开发者可以通过`.on()`方法轻松地绑定touch事件,也可以使用`.off()`方法解除绑定,这与处理click或mouseover等传统事件并无太大区别。 此外,考虑到在不同设备和浏览器上的兼容性问题,该库可能还包含了对`...
在支付页面中,我们可以利用jQuery Mobile的页面结构和主题样式,来创建一个整洁、一致的界面,同时利用其触控事件,比如`tap`和`touch`,来替代传统的`click`事件,因为后者在移动端可能会有延迟问题。 `tap`事件...
首先需要了解的是,在移动端,触摸事件与click事件的区别。移动设备上触摸事件的发生顺序是:touchstart -> touchmove -> touchend,而标准的click事件是由mousedown -> mousemove -> mouseup组成的。click事件在...
在移动端,传统的鼠标事件如click、mouseover等不再适用,取而代之的是针对触摸设备的事件,如touchstart(触摸开始)、touchmove(触摸移动)和touchend(触摸结束)。jQuery提供了对这些事件的支持,使得在移动...
`click`事件在移动端可能不会被触发,因为浏览器会等待用户可能的双击操作,导致单击事件延迟执行或不执行。因此,开发者通常需要使用触摸事件来模拟点击行为,比如模仿Zepto库中的`tap`事件。 以下是一个简单的...
在实际应用中,我们可以结合这些事件和属性创建一个简单的图片轮播组件。例如,记录初始触摸位置,计算滑动距离,判断滑动方向,然后根据方向更新轮播图片的位置。在示例代码中,可以看到一个简单的轮播结构,通过...
总的来说,解决移动端滚动穿透问题需要结合CSS和JavaScript,通过动态控制页面滚动和遮罩层的显示状态来实现。上述示例代码提供了一个基本的实现方案,但具体应用可能需要根据项目需求进行适当的调整和优化。
但是在移动终端如iphone、ipod Touch、ipad上的web页面触屏时会产生ontouchstart、ontouchmove、ontouchend、ontouchcancel事件,分别对应了触屏开始、拖拽及完成触屏事件和取消。 当按下手指时,触发ontouchstart...
值得注意的是,触摸事件和鼠标事件在很多情况下会同时触发。为了防止两者产生冲突,可以通过调用event.preventDefault()方法阻止默认的鼠标事件,从而只触发触摸事件。 总结一下,HTML5的触摸事件给移动设备的交互...