JS 点击事件学习总结
废话篇:
在我们编写无论什么网页内容的时候我们总是或多或少的要接触到点击事件这一范畴的,写过几个简短的demo和网页之后,感觉自己对电机事件一类的东西了解也更为的清楚了,之前写过很多零零散散的东西现在整理一下,方便之后的阅读和复习。
正文片:
1、PC上的点击事件。
PC端用户通过鼠标和网页进行互动操作,此时我们用鼠标一类的事件的情况会有许多。因此在PC端我们多用mouse事件或者click事件来进行相关逻辑的编写。
事件的发生依照事件六中的先后顺序来进行的,对于鼠标垫额交互事件来说,事件的先后顺序是,mouseDown -> mouseMove -> mouseUp -> click -> dblclick
mouseDown事件标示的是当鼠标点击按下的时候需要执行的处理机制。
mouseMove事件是在鼠标点击还没有放开的情况之下,用户拖动鼠标时触发的事件。3
mouseUp事件是当我们放开鼠标按键的时候触发的事件。
click事件是当我们完成一次点击的时候所触发的事件。
dblclick标示的是双击事件,当点击完成两次之后会调用绑定的相关函数。当然执行顺序在click之后。 P.S.当同一个元素绑定了点击事件和双击事件的时候,我们想要把当前的两种事件的处理机制分开来的话。如果不做特殊处理的话,可能会在每一次想要执行双击事件之前都会执行一次单击事件。此时我们可以使用延迟函数setTimeout,并在调用dblclick事件的时候把在单击事件中的延时函数所返回的等待队列中的内容删除,如此的话,就可以实现控制当双击的时候不会执行单机逻辑。
由上面的事件执行顺序来看,我们在对一个元素绑定事件的时候要注意事件的处理过程的先后顺序,这样才能更好的控制事件之间的逻辑关系。
2、移动端点击事件。
在移动端上面使用点击事件的时候和PC端上会有些不同,因为移动端上面,我们的交互方式是不相同的,移动端使用电容屏,所以在绑定顶相关的时候的时候,我们应该注意的是移动端的事件的顺序是touchstart -> touchmove -> touchend -> click -> dblclick
touchstart表示的是当用户的手指点击当前的屏幕的时候触发的事件。
touchmove表示的是当前的用户手指点击并滑动之后时触发的事件。
touchend标示的是当前的用户手指离开触摸屏之后触发的事件。
其他的两个时间和上面的提到的事件是相同的情况。
当时在移动端和PC端有一点是不相同的,因为同一时间有多个手指同时触碰,所以需要有一个列表来记录触碰的先后顺序和坐标。
在触碰事件种会有如下的其他参数:
1.touches列表,存储的是当前屏幕上所有触屏手指的集合列表。
2.targetTouches列表,存储的是绑定了事件的元素上面的触屏手指的集合列表。
3.changeTouches列表,存储的是触摸事件触发的时候改变了的触摸手指的集合列表(e.g.当我们用一个手指触屏的时候,changeTouches列表中存储的是,当前这一手指触摸到屏幕的对象信息,而当我们保持第一个触摸手指的位置不变的时候,而在用另外两个手指触摸屏幕的时候,changeTouches将会存储的信息是两外两个触摸事件的对象,而没有第一个手指触摸时间的对象了,因为它没有改变。)。
由上可知,当我们需要获取手机端显示坐标的时候我们需要用当前的事件来获取touches列表中的一项数据,touches[0],然后才可以用这一数据来获取当前的点击位置。
3、事件冒泡。
当当前元素绑定了点击事件的时候,而其父级元素也绑定了同样的事件的时候,当自己元素事件触发了的话,父级元素事件也会在同一时间内触发。并且其执行顺序在当前元素下一执行事件之前。
例如,当我们为一个元素设置了mouseDown(touchstart)和click事件的时候,同时在为其父级元素设置了相同的事件,当我们可以发现,在子元素的mouseDown或者是touchstart事件发生的时候父级元素的mouseDwon(touchstart)事件也会在子元素当前事件发生之后立即触发。而后子元素的click事件再出发之后,父级元素click事件一并触发。
其实我们同样也是可以阻止事件冒泡的发生的,通过event.stopPropagation()调用来阻止。
当然,其实浏览器对于一些监听事件是有默认处理的,例如在移动端touchmove有内容滚动的默认事件,我们可以通过event.preventDefault()来进行阻止的。
以上就是我现在学习到的一些内容,如有补充,后期更新。
JS 点击事件学习总结的更多相关文章
- 项目遇到的小问题(关于vue-cli中js点击事件不起作用和iconfont图片下载页面css样式乱的解答)
第一个:关于vue-cli中js点击事件不起作用 在vue的methods方法queryBtnFun()中拼接html和click操作事件的时候,发现点击事件一起未起作用: 后来发现是DOM执行顺序 ...
- JS中点击事件冒泡阻止
JS中点击事件冒泡阻止 解析: 一个div层'out',内含有一个div层'in'.如下: 两个层都绑定了点击事件,但是点击in层的时候,点击事件会出现冒泡现象,同时也会触发out层的点击事件. 但是 ...
- IOS的UIWebView中JS点击事件,需要加入cursor:pointer;属性才可以
IOS的UIWebView中JS点击事件,需要加入cursor:pointer;属性才可以. Android的WebView可以支持外链样式,js文件:IOS则需要改为内嵌样式和JS文件.
- js点击事件防止用户重复点击执行
点击事件里给button标签加一个自定义属性,存上次点击时间 追问: 求详细代码,JS 真心的没怎么做过 追答: <input type="button" id=&quo ...
- js点击事件,数字累加
<!doctype html><html lang="en"><head> <meta charset="utf-8&qu ...
- JS - 点击事件排除父级标签
点击事件排除父级标签,这里使用的是stopPropagation()方法.event.stopPropagation(); 对了,这里还用了解除click事件,unbind. 下面这篇博文,介绍挺全的 ...
- JS点击事件的重叠处理(多个点击事件出现冲突)
最近开发遇见了一个这个样的情况,一个button在一个div中,点击buton是一个事件,点击大的div也是一个事件,但是由于button在div中,点击button会把两个事件都执行了,但是我们想点 ...
- js点击事件在苹果端失效的问题
在安卓机上,我们随意定义点击事件也能够在找到点击的元素,但是在苹果端上就是不行,怎么点击都没有效果.这是因为在苹果机上window禁止了手指误点功能,必须解除这一功能,或者给点击事件指引某个元素上绑定 ...
- 转:js点击事件在ios中失效的3种解决方案
ios中不允许将点击事件绑定在document或者body上,如果绑定上的话将会失效.解决方案: 例如: $(document).on('click', '#generate', function ...
随机推荐
- 两种高性能I/O设计模式(Reactor/Proactor)的比较
原文出处: Alex Libman 译文出处:潘孙友 欢迎分享原创到伯乐头条 综述 这篇文章探讨并比较两种用于TCP服务器的高性能设计模式. 除了介绍现有的解决方案,还提出了一种更具伸缩性,只 ...
- bootstrap学习记录(慕课网教程)
1.当主标题下需要副标题时可在h中嵌套small<h1>nihao<small>a</samll></h1> 2.当某一段落需要突出显示时可添加lead ...
- ol3简介
ol3从根本上进行了重新设计,相对于ol2,他符合现代浏览器的一些设计理念,使用了js新的特性,initial版本的目的是支持原来ol2的大多数功能,支持公网上流行的缓存切片,支持常见的矢量数据格式. ...
- DOS系统功能调用表(INT 21H)
AH 功能 调用参数 返回参数 00 程序终止(同INT 20H) CS=程序段前缀 01 键盘输入并回显 AL=输入字符 02 显示输出 DL=输出字符 03 异步通迅输入 AL=输入数据 04 异 ...
- 测试c语言函数调用性能因素之测试三
函数调用:即调用函数调用被调用函数,调用函数压栈,被调用函数执行,调用函数出栈,调用函数继续执行的一个看似简单的过程,系统底层却做了大量操作. 操作: 1, 调用函数帧指针 ...
- webservice wsdl 生成服务
由于之前的示例是在当前项目下发布的server,也是在当前项目下访问的server发布的webservice.但在实际应用中,我们的服务端往往是和客户諯分离的,甚至它们是不同的项目中不同的人写的.而像 ...
- Using 1.7 requires compiling with Android 4.4 (KitKat); currently using API 8
Refer :http://www.cnblogs.com/mengfanrong/p/3745475.html Righ click on your project > properties ...
- 编写更好的CSS
编写好的CSS代码能提升页面的渲染速度.本质上,一条规则都没有引擎解析的最快.MDN上将CSS选择符归拆分成四个主要类别,如下所示,性能依次降低. ID 规则 Class 规则 标签规则 通用规则 对 ...
- GCD的简单封装
扩展: dispatch_block_t :无参数block,使用起来很简单 下载链接:http://pan.baidu.com/s/1bndN6Yb ]; } //定时器 - (voi ...
- poj 2068 Nim 博弈论
思路:dp[i][j]:第i个人时还剩j个石头. 当j为0时,有必胜为1: 后继中有必败态的为必胜态!!记忆化搜索下就可以了! 代码如下: #include<iostream> #incl ...