Vue中@click.stop和@click.prevent实例详解 |
一、@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(阻止事件的默认行为)
例如:在代码里写入一个 <div> <a href="http://www.baidu.com" rel="external nofollow" rel="external nofollow" target='_blank'>百度</a> </div> 但如果我们不想让它跳转,而是在点击 <div> <a href="http://www.baidu.com" rel="external nofollow" rel="external nofollow" target='_blank' @click.prevent='handleClick('修改')'>百度</a> </div> 这时再点击 附: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内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持! |