Vue——事件修饰符

文章目录

  • 前言
  • [阻止默认事件 prevent](#阻止默认事件 prevent)
  • [阻止事件冒泡 stop](#阻止事件冒泡 stop)

前言

在官方文档中对于事件修饰符有一个很好的说明,本篇文章主要记录验证测试的案例。

官方文档 事件修饰符

阻止默认事件 prevent

在js原生的语言中,可以根据标签本身的事件对象进行阻止默认事件操作,如下所示:

html 复制代码
<template>
    <h1>阻止默认事件</h1>
    <a @click="clickTest1" href="https://writing-bugs.blog.csdn.net/">专注写bug csdn</a>
</template>
<script>
export default{
    data(){
        return{
           
        }
    },
    methods:{
        clickTest1(e){
        	// js 原生 事件对象 方法 实现阻止默认事件
            e.preventDefault();
            console.log("点击了!");
        }
    }
}
</script>

<a>标签,增加href属性后,浏览器点击当前连接即可进行跳转操作,若只想点击后触发日志打印或其他操作,但不想跳转,则可以采取e.preventDefault() 进行默认事件的阻止。


Vue中有更加简单的实现方式,只需要在对应v-on绑定的click方法后增加对应的标识即可。如:@click.prevent="xxx"

html 复制代码
<template>
    <h1>阻止默认事件</h1>
    <a @click="clickTest1" href="https://writing-bugs.blog.csdn.net/">专注写bug csdn</a>
    <br>
    <hr>
    <a @click.prevent="clickTest2" href="https://writing-bugs.blog.csdn.net/">专注写bug csdn</a>
</template>
<script>
export default{
    data(){
        return{
           
        }
    },
    methods:{
        clickTest1(e){
            e.preventDefault();
            console.log("点击了!");
        },
        clickTest2(){
            console.log("点击了2!");
        }
    }
}
</script>

阻止事件冒泡 stop

触发子级元素的事件的同时,也触发了父级元素的事件。

冒泡通常出现在嵌套中,比如div有个点击事件,其内有个其他的标签,也有一个点击事件。如下所示。

html 复制代码
<template>
    <h1>阻止事件冒泡</h1>
    <div @click="clickDiv">
        <p @click="clickP">666666</p>
    </div>
</template>
<script>
export default{
    data(){
        return{
           
        }
    },
    methods:{
        clickDiv(e){
            console.log("点击了 div!");
        },
        clickP(){
            console.log("点击了 p!");
        }
    }
}
</script>

当点击对应的p标签的文字后,控制台中将打印如下的信息。

如何想要只触发p标签的点击事件,但不想触发外层的其他点击事件,这种如何实现呢?

在js原生语法中,可以采取e.stopPropagation() 进行事件冒泡的阻止操作。

比如:

html 复制代码
<template>
    <h1>阻止事件冒泡</h1>
    <div @click="clickDiv">
        <p @click="clickP">666666</p>
    </div>
</template>
<script>
export default{
    data(){
        return{
           
        }
    },
    methods:{
        clickDiv(e){
            console.log("点击了 div!");
        },
        clickP(e){
            // js 原生阻止事件 冒泡
            e.stopPropagation();
            console.log("点击了 p!");
        }
    }
}
</script>

在vue中有一个更为简单的方式实现,直接在对应事件后增加.stop标识。

html 复制代码
<template>
    <h1>阻止事件冒泡</h1>
    <div @click="clickDiv">
        <p @click.stop="clickP">666666</p>
    </div>
</template>
<script>
export default{
    data(){
        return{
           
        }
    },
    methods:{
        clickDiv(e){
            console.log("点击了 div!");
        },
        clickP(e){
            // js 原生阻止事件 冒泡
            //e.stopPropagation();
            console.log("点击了 p!");
        }
    }
}
</script>
相关推荐
CharlesYu016 小时前
前端性能优化的第一性原理,是不断缩短“用户发起意图 → 获得可用结果”之间的时间
前端
Bs_MoneyMagnet7 小时前
基于springboot+vue的医疗健康便民服务平台的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring
平头哥技术团队7 小时前
Day 21 _ 页内锚点_给每段起个 id,目录写 href=_#id_,点一下页面就滚到那一段
前端·html·html5
子兮曰8 小时前
Bun v1.4.1 深度解析:从 Zig 到 Rust,一场 11 天、64 个 AI 代理的语言迁徙
前端·后端·bun
人民广场吃泡面8 小时前
什么是AI Agent?它又能给前端带来哪些效率提升?
前端·人工智能
中科三方9 小时前
两家域名注册商资质被ICANN终止:企业域名资产安全再受关注
前端·网络·安全·域名
bug总结9 小时前
uniapp vue3全局方法注册使用
前端·javascript·uni-app
华无丽言9 小时前
如何在宜搭中实现获取子表中的字段值赋值到父表中?
前端·javascript·低代码
IT_陈寒10 小时前
Vue的computed属性竟然坑了我一把
前端·人工智能·后端
威斯软科的老司机10 小时前
通俗讲解 CNN 图像识别、向量 Embedding、Softmax 概率计算这三块的简化原理
前端·人工智能·ui·数字孪生