当前位置:   article > 正文

Vue实战(07)Vue中的@click.stop和@click.prevent

@click.prevent

一、@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>
  • 1
  • 2
  • 3
  • 4
  • 5

需要使用阻止事件冒泡(也即阻止点击事件继续传播)来解决此问题,
将子组件中的@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>
  • 1
  • 2
  • 3
  • 4
  • 5

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

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

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

<div>
	<a href="http://www.baidu.com" target='_blank'>百度</a>
</div>
  • 1
  • 2
  • 3

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

<div>
	<a href="http://www.baidu.com"  target='_blank' @click.prevent='handleClick('修改')'>百度</a>
</div>
  • 1
  • 2
  • 3

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


软件测试工程师一只,也在不断的学习阶段,平时的小经验不定期分享。
博主经验有限,若有不足,欢迎交流,共同改进~
愿与同在CSDN的你共同进步。

作者 | 綦枫
出品 | 汉卿工作室
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/79384
推荐阅读
  

闽ICP备14008679号