@click.prevent.self和@click.self.prevent區別


注意:prevent 阻止的是“跳轉事件”而不是“彈出警告”

v-on:click.prevent.self的demo如下: 

<div id="box">
<div @click="alert(1)">
<a href="/#" @click="alert(2)">a標簽
<div @click="alert(3)">div標簽</div>
</a>
</div>
</div>
此時點擊a標簽會依次彈出2,1,跳轉。點擊div標簽會依次彈出3,2,1,跳轉。這發生了事件冒泡。

咱們看一下加上v-on:click.prevent.self之后的:

<div @click="alert(1)">
<a href="/#" @click.prevent.self="alert(2)">a標簽
<div @click="alert(3)">div標簽</div>
</a>
</div>
此時點擊a標簽會依次彈出2,1。點擊div標簽會依次彈出3,1。此時各位看官已經發現,a標簽不僅沒有冒泡,也沒有跳轉,這就是官網說的會阻止所有的點擊。

 這段是“沒文化不開心”網友的解釋:

點擊div標簽,會alert3,alert1。不但阻止了alert(2),還阻止了a的默認跳轉。

因為點擊的時候會先prevent,阻止默認事件,阻止了跳轉;然后判斷是否是self,因為點擊到的是div標簽,所以不是self。但是a標簽是self,阻止了alert(2)。

 

 

 

v-on:click.self.prevent的demo如下:

<div @click="alert(1)">
<a href="/#" @click.self.prevent="alert(2)">a標簽
<div @click="alert(3)">div標簽</div>
</a>
</div>
點擊div標簽會依次彈出3,1,跳轉。此時a標簽沒有響應彈框,但是發生了跳轉,這就是官網說的只會阻止對元素自身的點擊。

 這段是“沒文化不開心”網友的解釋:

點擊div標簽,會alert3,alert1,跳轉到/#。只阻止了alert(2)。

因為會先判斷self,點擊到div3,不是self,所以不會執行click事件,就不會執行 阻止默認事件和alert(2) ,所以可以跳轉


————————————————
版權聲明:本文為CSDN博主「bug菌」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_39105508/article/details/83008604


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM