解决vue的touchStart事件及click事件冲突问题
网络编程 2021-07-04 14:06www.168986.cn编程入门
这篇文章主要介绍了解决vue的touchStart事件及click事件冲突问题,具有很好的参考价值,希望对大家有所帮助。一起跟随长沙网络推广过来看看吧
一 、问题:
今天遇到这样问题,给某个元素同时绑定touchStart及click事件后,若在移动设备上,当你点击时,会依次出发这两个事件。因为移动端设备上的click事件触发是会延迟300ms,所以touchStart事件会先触发后再触发click事件。这样导致每次都要执行两次,这样毫无意义。这里提醒下,PC是无法识别touch相关事件
二、解决方式
(1)preventDefault方法
通过使用preventDefault方法(阻止元素默认事件行为的发生)来解决。在touchstart中添加 e.preventDefault()就可以阻止click事件触发。
模板
<ul class="list"> <li class="item" v-for="item of letters" :key="item" :ref="item" @touchstart="handleTouchStart" @click="handleleterClick" >{{item}}</li> </ul>
上面模板可以使用vue事件修饰符@touchstart.s.prevent实现,但method中的handleTouchStart 就无需添加 e.preventDefault();
<ul class="list"> <li class="item" v-for="item of letters" :key="item" :ref="item" @touchstart.s.prevent="handleTouchStart" @click="handleleterClick" >{{item}}</li> </ul>
methods: { handleleterClick (e) { console.log('click事件执行一次') this.$emit('change', e.target.innerText) }, handleTouchStart (e) { console.log('TouchStart执行一次') e.preventDefault()//添加阻止click事件触发 this.touchStatus = true } } }
未添加 e.preventDefault()前打印结果
添加 e.preventDefault()后打印结果
(2)判断浏览器是否支持触屏事件
通过"ontouchend" in document来判断浏览器是否支持触屏事件,若支持调用touch事件,不支持调用click事件。
<ul class="list"> <li class="item" v-for="item of letters" :key="item" :ref="item" @click="handleSelfClick" >{{item}}</li> </ul>
methods: { handleleterClick (e) { console.log('click事件执行一次') this.$emit('change', e.target.innerText) }, handleTouchStart (e) { console.log('TouchStart执行一次') this.touchStatus = true }, handleSelfClick (e) { console.log('ontouchstart' in document)//打印是否支持touch事件。 if ('ontouchstart' in document) { this.handleTouchStart(e) } else { this.handleleterClick(e) } } }
以上这篇解决vue的touchStart事件及click事件冲突问题就是长沙网络推广分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持狼蚁SEO。
编程语言
- 机械手焊接机器人编程 机械手焊接设备编程
- vb数据库编程实例,vb做数据库
- tiobe世界编程语言排行榜,全球编程语言排行
- 成都java编程培训 成都it编程培训中心
- 编程基础培训,编程基础知识培训
- flash游戏编程基础教程,flash游戏开发教程
- 不会英语能学编程吗 不会英语可以学程序员吗
- 爱心代码编程C语言 爱心代码编程c语言公式
- c语言编程学习入门 c语言编程快速入门
- 西门子plc编程培训 西门子plc编程培训班
- 哪里可以学编程 台州哪里可以学编程
- 少儿编程哪个好 少儿编程哪个品牌好
- 编程是什么意思,图形编程是什么意思
- c语言编程软件下载,c语言编程软件在哪下载
- java编程软件下载,java编程下载手机版
- ug编程培训学校,ug编程培训教程