Vue中@click.stop和@click.prevent实例详解

2024-04-19 0 15
目录
  • 一、@click.stop(阻止事件冒泡)
  • 二、@click.prevent(阻止事件的默认行为)
  • 附:Vue @click.stop阻止事件向祖先元素传递(事件冒泡)
    • 任何事件都不触发
    • 不触发父级事件,触发属于自己的事件
  • 总结

    一、@click.stop(阻止事件冒泡)

    @click.stop:阻止事件冒泡,即阻止点击事件从子组件向父组件传播。

    案例:我们在父元素中添加了一个click事件A,并且在其下的子元素中也添加了一个click事件B。

    这时我想点击子元素触发子元素的点击事件,但实际上会先触发子组件的事件,然后触发父组件的事件。

    <div class=\’handle-box\’ @click=\”clickBox\”>
    <div @click=\”handleClick(\’新增\’)\”><text>新增</text></div>
    <div @click=\”handleClick(\’修改\’)\”><text>修改</text></div>
    <div @click=\”handleClick(\’删除\’)\”><text>删除</text></div>
    </div>

    需要使用阻止事件冒泡(也即阻止点击事件继续传播)来解决此问题,

    将子组件中的@click改为@click.stop即可:

    <div class=\’handle-box\’ @click=\”clickBox\”>
    <div @click.stop=\”handleClick(\’新增\’)\”><text>新增</text></div>
    <div @click.stop=\”handleClick(\’修改\’)\”><text>修改</text></div>
    <div @click.stop=\”handleClick(\’删除\’)\”><text>删除</text></div>
    </div>

    二、@click.prevent(阻止事件的默认行为)

    @click.prevent:阻止事件的默认行为。它会阻止触发dom的原始事件,而只执行我们自定义的事件。

    例如:在代码里写入一个<a>标签,在点击<a>标签时,会默认触发一次跳转,跳转到目标URL:

    <div>
    <a href=\”wp-content/uploads/2024/04/\” rel=\”external nofollow\” rel=\”external nofollow\” target=\’_blank\’>百度</a>
    </div>

    但如果我们不想让它跳转,而是在点击<a>标签时执行我们的自定义方法,那就需要用到@click.prevent啦!用法如下:

    <div>
    <a href=\”wp-content/uploads/2024/04/\” rel=\”external nofollow\” rel=\”external nofollow\” target=\’_blank\’ @click.prevent=\’handleClick(\’修改\’)\’>百度</a>
    </div>

    这时再点击<a>标签,就不会跳转到目标URL啦,而是会执行我们自定义的handleClick(‘修改’)事件。

    附:Vue @click.stop阻止事件向祖先元素传递(事件冒泡)

    任何事件都不触发

    <template>
    <div @click=\”fun\”>
    <div @click.stop>
    <!–子div–>
    </div>
    </div>
    </template>

    <script>
    export default {
    methods: {
    fun() {
    // 点击父div时执行的功能
    console.log(\’单击了父div\’);
    },
    },
    }
    </script>

    不触发父级事件,触发属于自己的事件

    <template>
    <div @click=\”doSomething\”>
    <button @click.stop=\”doSomethingElse\”>不会触发父级元素的点击事件</button>
    </div>
    </template>
    <script>
    export default {
    methods: {
    doSomething() {
    console.log(\’doSomething\’)
    },
    doSomethingElse() {
    console.log(\’doSomethingElse\’)
    }
    }
    }
    </script>

    总结

    到此这篇关于Vue中@click.stop和@click.prevent详解的文章就介绍到这了,更多相关Vue中@click.stop和@click.prevent内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

    您可能感兴趣的文章:

    • vue click.stop阻止点击事件继续传播的方法
    • vue中关于click.stop的用法
    • vue函数@click.prevent的使用解析

    收藏 (0) 打赏

    感谢您的支持,我会继续努力的!

    打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
    点赞 (0)

    悠久资源 JavaScript Vue中@click.stop和@click.prevent实例详解 https://www.u-9.cn/biancheng/javascript/187654.html

    常见问题

    相关文章

    发表评论
    暂无评论
    官方客服团队

    为您解决烦忧 - 24小时在线 专业服务