vue3中的事件修飾符詳解
vue3中事件修飾符
vue3中的事件修飾符有:
.stop // 阻止事件傳遞 .prevent // 停止默認(rèn)事件 .self // 自身執(zhí)行 .capture // 使用捕獲模式 .once // 只執(zhí)行一次 .passive // 立即執(zhí)行
1、.stop
作用:阻止冒泡事件
冒泡事件:子元素的事件傳遞到父元素,即你促發(fā)子元素的click事件,由于冒泡,會使外層的父元素的click事件同時(shí)觸發(fā)。
<div @click="shout(1)">
<button @click="shout(2)">點(diǎn)擊查看內(nèi)容</button>
</div>內(nèi)容彈出時(shí)先觸發(fā)彈出2,再觸發(fā)彈出1。
方法一:在子元素的click后面直接加上.stop,就可以阻止冒泡事件了:
<div @click="shout(1)">
<button @click.stop="shout(2)">點(diǎn)擊查看內(nèi)容</button>
</div>方法二:使用參數(shù)對象的stopDefault方法,如下:
<div @click="shout(1)">
<button @click="shout(2)">點(diǎn)擊查看內(nèi)容</button>
</div>
methods: {
shout(e){
e.stopDefault()
}
}2、.prevent
作用:阻止瀏覽器的默認(rèn)事件
默認(rèn)事件:移動(dòng)端瀏覽器的下拉刷新事件、點(diǎn)擊超鏈接會跳轉(zhuǎn)頁面.......
<a rel="external nofollow" rel="external nofollow" rel="external nofollow" @click="showInfo">點(diǎn)我提示信息</a>
如上面的示例,點(diǎn)擊a標(biāo)簽就會跳轉(zhuǎn)到新鏈接,這個(gè)時(shí)候我們需要阻止默認(rèn)事件,除了去掉href鏈接這個(gè)方法外,還可以用prevent阻止默認(rèn)事件。
方法一:在click后面直接加上.prevent,如下:
<a rel="external nofollow" rel="external nofollow" rel="external nofollow" @click.prevent="showInfo">點(diǎn)我提示信息</a>
方法二:使用參數(shù)對象的preventDefault方法,如下:
<a rel="external nofollow" rel="external nofollow" rel="external nofollow" @click="showInfo($event)">點(diǎn)我提示信息</a>
methods: {
showInfo(e){
e.preventDefault()
}
}3、.self
作用:阻止自身事件促發(fā),但不會阻止冒泡
<div class="outer" @click="outer">
<div class="middle" @click.self="middle">
<button @click="inner">點(diǎn)擊</button>
</div>
</div>當(dāng)我們點(diǎn)擊button的時(shí)候,先執(zhí)行inner,傳遞到middle,此時(shí)middle里有一個(gè).self,.self阻止了middle的click事件,所以繼續(xù)冒泡到outer,執(zhí)行outer的click事件。
結(jié)果:執(zhí)行click事件的順序:inner ----> outer
4、.capture
作用:打亂冒泡順序(即可以理解為給元素添加一個(gè)監(jiān)聽器,當(dāng)元素發(fā)生冒泡時(shí),先觸發(fā)帶有該修飾符的元素。若有多個(gè)該修飾符,則由外而內(nèi)觸發(fā)。)
<!-- captrue:使用事件的捕捉模式 -->
<div class="box1" @click.capture="showMsg(1)">
div1
<div class="box2" @click="showMsg(2)">
div2
</div>
</div>
上面的執(zhí)行順序是1、25、.once
作用:事件只觸發(fā)一次(常用)
6、.passive
作用:事件的默認(rèn)行為立即執(zhí)行,無需等待事件回調(diào)執(zhí)行完畢(不常用)
不要把 .passive 和 .prevent 一起使用,因?yàn)?.prevent 將會被忽略。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue中對象的賦值Object.assign({}, row)方式
這篇文章主要介紹了vue中對象的賦值Object.assign({}, row)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
Vue如何使用ElementUI對表單元素進(jìn)行自定義校驗(yàn)及踩坑
有一些驗(yàn)證不是通過input select這樣的受控組件來觸發(fā)驗(yàn)證條件的 ,可以通過自定義驗(yàn)證的方法來觸發(fā),下面這篇文章主要給大家介紹了關(guān)于Vue如何使用ElementUI對表單元素進(jìn)行自定義校驗(yàn)及踩坑的相關(guān)資料,需要的朋友可以參考下2023-02-02
詳解vue服務(wù)端渲染瀏覽器端緩存(keep-alive)
在使用服務(wù)器端渲染時(shí),除了服務(wù)端的接口緩存、頁面緩存、組建緩存等,瀏覽器端也避免不了要使用緩存,減少頁面的重繪。這篇文章主要介紹了詳解vue服務(wù)端渲染瀏覽器端緩存(keep-alive),感興趣的小伙伴們可以參考一下2018-10-10
vue解決一個(gè)方法同時(shí)發(fā)送多個(gè)請求的問題
今天小編就為大家分享一篇vue解決一個(gè)方法同時(shí)發(fā)送多個(gè)請求的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
Vue 使用Props屬性實(shí)現(xiàn)父子組件的動(dòng)態(tài)傳值詳解
今天小編就為大家分享一篇Vue 使用Props屬性實(shí)現(xiàn)父子組件的動(dòng)態(tài)傳值詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
Vue項(xiàng)目打包部署到GitHub Pages的實(shí)現(xiàn)步驟
本文主要介紹了Vue項(xiàng)目打包部署到GitHub Pages的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
Vue2.0實(shí)現(xiàn)調(diào)用攝像頭進(jìn)行拍照功能 exif.js實(shí)現(xiàn)圖片上傳功能
這篇文章主要為大家詳細(xì)介紹了Vue2.0實(shí)現(xiàn)調(diào)用攝像頭進(jìn)行拍照功能,以及圖片上傳功能引用exif.js,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
vue 實(shí)現(xiàn)一個(gè)簡單的全局調(diào)用彈窗案例
這篇文章主要介紹了vue 實(shí)現(xiàn)一個(gè)簡單的全局調(diào)用彈窗案例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09

