事件的捕獲階段
自基礎庫版本 1.5.0 起,觸摸類事件支持捕獲階段。捕獲階段位於冒泡階段以前,且在捕獲階段中,事件到達節點的順序與冒泡階段剛好相反。須要在捕獲階段監聽事件時,能夠採用capture-bind、 capture-catch關鍵字,後者將中斷捕獲階段和取消冒泡階段。
bind
綁定了事件時,點擊子節點也會觸發父節點的事件。但需求是點擊子節點只觸發子節點事件。這時就能夠在子節點用capture-catch
來綁定事件,中斷事件的捕獲階段和取消冒泡階段,這樣點擊子節點時就只會觸發子節點事件,而且不會觸發父節點事件。在如下代碼中,點擊inner view
將只觸發handleTap4
(由於它中斷了捕獲階段和取消了冒泡階段)vue
<view id="outer" bind:touchstart="handleTap1" capture-bind:touchstart="handleTap2"> outer view <view id="inner" bind:touchstart="handleTap3" capture-catch:touchstart="handleTap4"> inner view </view> </view>
爲了解決這個問題,Vue.js 爲 v-on 提供了事件修飾符。以前提過,修飾符是由點開頭的指令後綴來表示的。小程序
- stop
- prevent
- capture
- self
- once
- passive
<el-collapse accordion> <el-collapse-item> <template slot="title"> <!-- 阻止單擊事件繼續傳播 --> <div @click.stop="doSomething">一致性 Consistency<i class="header-icon el-icon-info"></i><div> </template> <div>與現實生活一致:與現實生活的流程、邏輯保持一致,遵循用戶習慣的語言和概念;</div> <div>在界面中一致:全部的元素和結構需保持一致,好比:設計樣式、圖標和文本、元素的位置等。</div> </el-collapse-item> </el-collapse>
以上代碼點擊摺疊面板title
中的div
時將不會觸發摺疊面板的change
事件,只觸發doSomething
。微信小程序
要想實現只觸發自身綁定的事件,而不觸發它的子節點或父節點的事件,則:微信
capture-catch
來綁定事件.stop
事件修飾符