vue項目遇見事件冒泡該如何處理詳解
開發(fā)環(huán)境
- Win 10
- element-ui "2.8.2"
- Vue 2.9.6
事件冒泡簡介
如下圖,當(dāng)我們點擊頁面某個元素時,會產(chǎn)生點擊事件,事件由外到內(nèi),逐層遞進(jìn)(事件捕獲階段,途中的1->2->3->4),當(dāng)目標(biāo)元素捕捉到目標(biāo)事件時,會響應(yīng)事件,并由內(nèi)到外,逐層往外傳遞(事件冒泡階段,圖中的4->5->6->7),這便是事件冒泡。正式因為冒泡機(jī)制,當(dāng)用戶點擊圖中目標(biāo)元素div時,5,6,7事件區(qū)的元素都會響應(yīng)點擊事件(如果具備響應(yīng)事件能力的話)

實驗1
<template>
????<div>
????????<div?id="app"?@click="fun1"?style="padding:5px;border:2px?solid?#b7b766">
????????????div1
????????????<div?@click="fun2"?style="padding:5px;border:2px?solid?#79CDCD;">
????????????????div2
????????????????<div?@click="fun3"?style="padding:5px;?border:2px?solid?#BEBEBE;">
????????????????????div3
????????????????????<div?@click="fun4"?style="border:2px?solid?#8470FF;">div4</div>
????????????????</div>
????????????</div>
????????</div>
????</div>
</template>
<script>
export?default?{
????methods:?{
????????fun1()?{
????????????console.log("點擊了div1");
????????},
????????fun2()?{
????????????console.log("點擊了div2");
????????},
????????fun3()?{
????????????console.log("點擊了div3");
????????},
????????fun4()?{
????????????console.log("點擊了div4");
????????}
????}
????
};
</script>實驗結(jié)果如下:

實驗2
實驗1的基礎(chǔ)上,修改下代碼,如下,@click ="fun3"改成@click.stop="fun3"
????????<div?id="app"?@click="fun1"?style="padding:5px;border:2px?solid?#b7b766"> ????????????div1 ????????????<div?@click="fun2"?style="padding:5px;border:2px?solid?#79CDCD;"> ????????????????div2 ????????????????<div?@click.stop="fun3"?style="padding:5px;?border:2px?solid?#BEBEBE;"> ????????????????????div3 ????????????????????<div?@click="fun4"?style="border:2px?solid?#8470FF;">div4</div> ????????????????</div> ????????????</div> ????????</div>
實驗結(jié)果:
點擊div4,輸出如下:

實驗3
實驗1的基礎(chǔ)上,修改下代碼,如下,@click="fun4"改成@click.stop="fun4"
???????<div?id="app"?@click="fun1"?style="padding:5px;border:2px?solid?#b7b766"> ????????????div1 ????????????<div?@click="fun2"?style="padding:5px;border:2px?solid?#79CDCD;"> ????????????????div2 ????????????????<div?@click="fun3"?style="padding:5px;?border:2px?solid?#BEBEBE;"> ????????????????????div3 ????????????????????<div?@click.stop="fun4"?style="border:2px?solid?#8470FF;">div4</div> ????????????????</div> ????????????</div> ????????</div>
實驗結(jié)果:

結(jié)論
綜合實驗1,2,3可知,如果想阻止哪個元素的事件冒泡(即事件只針對該元素有效),只要給該元素的事件增加.stop修飾符即可。
到此這篇關(guān)于vue項目遇見事件冒泡該如何處理的文章就介紹到這了,更多相關(guān)vue事件冒泡處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue draggable resizable gorkys與v-chart使用與總結(jié)
這篇文章主要介紹了vue draggable resizable gorkys與v-chart使用與總結(jié),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09
vue實現(xiàn)盒子內(nèi)拖動方塊移動的示例代碼
這篇文章主要給大家介紹了如何通過vue實現(xiàn)盒子內(nèi)拖動方塊移動,文章通過代碼示例講解的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴可以參考閱讀本文2023-08-08
vue中關(guān)于redirect(重定向)初學(xué)者的坑
這篇文章主要介紹了vue中關(guān)于redirect(重定向)初學(xué)者的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08
vue+tsc+noEmit導(dǎo)致打包報TS類型錯誤問題及解決方法
當(dāng)我們新建vue3項目,package.json文件會自動給我添加一些配置選項,這寫選項基本沒有問題,但是在實際操作過程中,當(dāng)項目越來越復(fù)雜就會出現(xiàn)問題,本文給大家分享vue+tsc+noEmit導(dǎo)致打包報TS類型錯誤問題及解決方法,感興趣的朋友一起看看吧2023-10-10
Element 默認(rèn)勾選表格 toggleRowSelection的實現(xiàn)
這篇文章主要介紹了Element 默認(rèn)勾選表格 toggleRowSelection的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
使用Vue3進(jìn)行數(shù)據(jù)綁定及顯示列表數(shù)據(jù)
這篇文章主要介紹了使用Vue3進(jìn)行數(shù)據(jù)綁定及顯示列表數(shù)據(jù),整篇文章圍繞Vue3進(jìn)行數(shù)據(jù)綁定及顯示列表數(shù)據(jù)的想換自來哦展開內(nèi)容,需要的小伙伴可以參考一下2021-10-10

