vue項(xiàng)目遇見(jiàn)事件冒泡該如何處理詳解
開(kāi)發(fā)環(huán)境
- Win 10
- element-ui "2.8.2"
- Vue 2.9.6
事件冒泡簡(jiǎn)介
如下圖,當(dāng)我們點(diǎn)擊頁(yè)面某個(gè)元素時(shí),會(huì)產(chǎn)生點(diǎn)擊事件,事件由外到內(nèi),逐層遞進(jìn)(事件捕獲階段,途中的1->2->3->4),當(dāng)目標(biāo)元素捕捉到目標(biāo)事件時(shí),會(huì)響應(yīng)事件,并由內(nèi)到外,逐層往外傳遞(事件冒泡階段,圖中的4->5->6->7),這便是事件冒泡。正式因?yàn)槊芭輽C(jī)制,當(dāng)用戶點(diǎn)擊圖中目標(biāo)元素div時(shí),5,6,7事件區(qū)的元素都會(huì)響應(yīng)點(diǎn)擊事件(如果具備響應(yīng)事件能力的話)
實(shí)驗(yàn)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("點(diǎn)擊了div1"); ????????}, ????????fun2()?{ ????????????console.log("點(diǎn)擊了div2"); ????????}, ????????fun3()?{ ????????????console.log("點(diǎn)擊了div3"); ????????}, ????????fun4()?{ ????????????console.log("點(diǎn)擊了div4"); ????????} ????} ???? }; </script>
實(shí)驗(yàn)結(jié)果如下:
實(shí)驗(yàn)2
實(shí)驗(yàn)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>
實(shí)驗(yàn)結(jié)果:
點(diǎn)擊div4,輸出如下:
實(shí)驗(yàn)3
實(shí)驗(yàn)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>
實(shí)驗(yàn)結(jié)果:
結(jié)論
綜合實(shí)驗(yàn)1,2,3可知,如果想阻止哪個(gè)元素的事件冒泡(即事件只針對(duì)該元素有效),只要給該元素的事件增加.stop修飾符即可。
到此這篇關(guān)于vue項(xiàng)目遇見(jiàn)事件冒泡該如何處理的文章就介紹到這了,更多相關(guān)vue事件冒泡處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue 動(dòng)態(tài)設(shè)置img的src地址無(wú)效,npm run build 后找不到文件的解決
這篇文章主要介紹了vue 動(dòng)態(tài)設(shè)置img的src地址無(wú)效,npm run build 后找不到文件的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07vue3+typescript實(shí)現(xiàn)圖片懶加載插件
這篇文章主要介紹了vue3+typescript實(shí)現(xiàn)圖片懶加載插件,幫助大家更好的理解和使用vue,感興趣的朋友可以了解下2020-10-10vue增加強(qiáng)緩存和版本號(hào)的實(shí)現(xiàn)方法
這篇文章主要介紹了vue增加強(qiáng)緩存和版本號(hào)的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05讓webpack+vue-cil項(xiàng)目不再自動(dòng)打開(kāi)瀏覽器的方法
今天小編就為大家分享一篇讓webpack+vue-cil項(xiàng)目不再自動(dòng)打開(kāi)瀏覽器的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09vue keep-alive實(shí)現(xiàn)多組件嵌套中個(gè)別組件存活不銷毀的操作
這篇文章主要介紹了vue keep-alive實(shí)現(xiàn)多組件嵌套中個(gè)別組件存活不銷毀的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10vue-router如何實(shí)現(xiàn)history模式配置
這篇文章主要介紹了vue-router如何實(shí)現(xiàn)history模式配置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06