vue中的事件修饰符

335 阅读1分钟

vue中的时间修饰符有以下几种:

1.prevent 阻止默认事件(常用)
2.stop 阻止事件冒泡(常用)
3.once 事件只触发一次(常用)
4.capture 使用事件的捕获模式
5.self 只有event.target是当前操作的元素时才触发事件
6.passive 事件的默认行为立即执行,无需等待事件回调立即执行

1.prevent阻止默认事件 举例:

<!-- 只执行showInfo事件,不执行a标签默认的打开链接操作 -->
<a href="http://www.baidu.com" @click.prevent="showInfo">点击我</a>

2.stop阻止事件冒泡 举例

<!-- 点击son时,阻止事件maopao(father不会响应),没有stop修饰时,son和father会先后响应 -->
<div class="father" @click="showInfo">
    <div class="son" @click.stop="showInfo"></div>
</div>

3.once 事件只触发一次 举例

<!-- once只会触发一次 下次点击不触发click事件 -->
<div class="father" @click.once="showInfo"></div>

4.capture 使用事件的捕获模式 举例:

<!-- 常规冒泡点击son,执行顺序是事件showInfo2->showInfo1; 使用capture修饰后,转换为捕获模式,执行顺序是事件showInfo1->showInfo2 -->
<div class="father" @click="showInfo1">
    <div class="son" @click.capture="showInfo2"></div>
</div>

5.self 只有event.target是当前操作的元素时才触发事件 举例:

<!-- 只有点击son时,son的click才会触发,点击father时,father的click事件才会触发,起到阻止冒泡的作用 -->
<div class="father" @click.self="showInfo1">
    <div class="son" @click="showInfo2"></div>
</div>

6.passive 事件的默认行为立即执行,无需等待事件回调立即执行

<!-- 正常的wheel事件 在鼠标滚轮滚动时会被触发,页面的滑动会不定等待事件处理完毕再下次滑动 passive相当于优先处理页面事件,在不影响页面操作的情况下处理事件 -->
<div class="list">
    <ul @wheel="wheel">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>
</div>

小技巧:
修饰符可以连,比如@click.stop.prevent=‘’,可以同时阻止冒泡和默认事项;