vue事件对象

<button @click="getEventDom(e);">getEventDom</button>  
<script>  
    var vue = new Vue({  
        el: "#app",  
        methods: {  
            getEventDom: function(e) {  
                event.preventDefault();  
                console.log(e);  
            }  
        }  
    });  
</script> 

事件修饰符

.stop
.prevent
.capture
.self
.once
.passive

1、事件冒泡(事件不会向上传递) 按上例中原生事件对象,要组织冒泡事件需要用到.preventDefault(),然而使用事件修饰符,仅需@click.stop即可。

<div @click="say">
parent
<div @click.stop="say">child</div>//阻止冒泡
</div>

2、阻止默认事件(不触发默认事件)

<a href="http://www.baidu.com" @click.prevent="say">百度</a>//阻止默认行为

3、指定元素触发(不包括子元素)

<a @click.stop.self.prevent="say" href="http://www.baidu.com" style="border: 10px s
olid red">
  <span>2</span>
  <span>1</span>
</a>

4、事件捕获方式(父->子)

<div @click='say'>parent
<div @click='say1'>
    child
</div>
</div>

5、绑定事件一次(触发后移除事件)

<div @click.once='say'>say</div>

6、.capture事件默认是双向的,先捕获,在冒泡

(二).注意:

使用修饰符时,顺序很重要;相应的代码会以同样的顺序产生。因此,用 v-on:click.prevent.self 会阻止所有的点击,而 v-on:click.self.prevent 只会阻止对元素自身的点击。

(三).vue2.3 新增

Vue 还对应 addEventListener 中的 passive 选项提供了 .passive 修饰符。这个 .passive 修饰符尤其能够提升移动端的性能。

<!-- 滚动事件的默认行为 (即滚动行为) 将会立即触发 -->
<!-- 而不会等待 `onScroll` 完成  -->
<!-- 这其中包含 `event.preventDefault()` 的情况 -->
<div v-on:scroll.passive="onScroll">...</div>

注意:

不要把 .passive 和 .prevent 一起使用,因为 .prevent 将会被忽略,同时浏览器可能会向你展示一个警告。请记住,.passive 会告诉浏览器你不想阻止事件的默认行为。

原文链接:https://blog.csdn.net/gao_xu_520/article/details/80363260

Logo

前往低代码交流专区

更多推荐