vue修飾符
阿新 • • 發佈:2017-05-23
span 修飾符 執行順序 而不是 冒泡 點擊 不執行 spa 第一次
<body> <div id="app" @click.prevent=""clickme> <section id="section" @click.stop="clickme"> <div id="div" @click.self="clickme"> <span id="span" @click.capture="clickme"> <p id="p" @click.once="clickme"> 用鼠標雙擊我,看看事件的傳遞真正順序。</p> </span> </div> </section> 點擊事件的響應順序如下:{{message}} </div> </body>
鼠標雙擊之後執行順序:span->p->section->span->section
上面各個修飾符的作用:
.prevent: 提交事件不再重載頁面
.stop: 阻止單擊事件冒泡
.self: 當事件發生在該元素本身而不是子元素的時候會觸發
.capture: 事件偵聽,事件發生的時候會調用
.once: 跟v-once作用類似,只渲染一次,第二次不會執行
解析:
第一次點擊:span有事件監聽,所以最先執行的是它,然後是事件發生的元素本身<p>,接著span執行了跳過,然後到了內層的div,由於是.self,而事件不是在div本身,所以不執行,最後到section,由於有.stop冒泡阻止,所以執行到這裏就停止了。最外層的div不會執行。
span->p->section
第二次點擊,同樣是先到span,由於<p>是.once,只被渲染一次,所以第二次不會執行,跳過了span,跳過了div,到了section......
span->section
後面的不管多少次點擊,到時出現span->section的結果。
本文轉載:http://www.2cto.com/kf/201703/615547.html
vue修飾符