国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

解決vue的touchStart事件及click事件沖突問題

瀏覽:99日期:2023-01-01 09:26:31

一 、問題:

今天遇到這樣問題,給某個(gè)元素同時(shí)綁定touchStart及click事件后,若在移動(dòng)設(shè)備上,當(dāng)你點(diǎn)擊時(shí),會(huì)依次出發(fā)這兩個(gè)事件。因?yàn)橐苿?dòng)端設(shè)備上的click事件觸發(fā)是會(huì)延遲300ms,所以touchStart事件會(huì)先觸發(fā)后再觸發(fā)click事件。這樣導(dǎo)致每次都要執(zhí)行兩次,這樣毫無意義。這里提醒下,PC是無法識(shí)別touch相關(guān)事件

二、解決方式

(1)preventDefault方法

通過使用preventDefault方法(阻止元素默認(rèn)事件行為的發(fā)生)來解決。在touchstart中添加 e.preventDefault()就可以阻止click事件觸發(fā)。

模板

<ul class='list'> <li v-for='item of letters' :key='item' :ref='item' @touchstart='handleTouchStart' @click='handleleterClick' >{{item}}</li> </ul>

上面模板可以使用vue事件修飾符@touchstart.stop.prevent實(shí)現(xiàn),但method中的handleTouchStart 就無需添加 e.preventDefault();

<ul class='list'> <li v-for='item of letters' :key='item' :ref='item' @touchstart.stop.prevent='handleTouchStart' @click='handleleterClick' >{{item}}</li> </ul>

methods: { handleleterClick (e) { console.log(’click事件執(zhí)行一次’) this.$emit(’change’, e.target.innerText) }, handleTouchStart (e) { console.log(’TouchStart執(zhí)行一次’) e.preventDefault()//添加阻止click事件觸發(fā) this.touchStatus = true } }}

未添加 e.preventDefault()前打印結(jié)果

解決vue的touchStart事件及click事件沖突問題

添加 e.preventDefault()后打印結(jié)果

解決vue的touchStart事件及click事件沖突問題

(2)判斷瀏覽器是否支持觸屏事件

通過'ontouchend' in document來判斷瀏覽器是否支持觸屏事件,若支持調(diào)用touch事件,不支持調(diào)用click事件。

<ul class='list'> <li v-for='item of letters' :key='item' :ref='item' @click='handleSelfClick' >{{item}}</li> </ul>

methods: { handleleterClick (e) { console.log(’click事件執(zhí)行一次’) this.$emit(’change’, e.target.innerText) }, handleTouchStart (e) { console.log(’TouchStart執(zhí)行一次’) 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事件沖突問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 壶关县| 晋江市| 洪江市| 赞皇县| 百色市| 永泰县| 昌吉市| 南宫市| 大洼县| 滁州市| 康马县| 景泰县| 新竹市| 张家界市| 凤山县| 阿合奇县| 濮阳县| 十堰市| 西宁市| 惠东县| 浪卡子县| 泽普县| 西贡区| 鄂伦春自治旗| 苍梧县| 加查县| 桐梓县| 夹江县| 阿图什市| 宜君县| 开封县| 高碑店市| 安泽县| 宜兰市| 东安县| 抚顺市| 吴旗县| 南投市| 洮南市| 湖州市| 玉门市|