# vue 超链接/el-link 阻止事件冒泡

本文详细讲解了Vue中常用的事件修饰符,包括stop阻止默认行为、once仅触发一次、self限定事件源、prevent阻止默认事件、passive禁用浏览器检查、capture捕获阶段监听,以及.native用于原生事件。通过实例演示了它们在实际开发中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

### 写法一
<div @click.stop>
<el-link :href="`/v1/prescription/look_event/`">
    <span v-text="item2.name"></span>
</el-link>
</div>

### 写法二

 <el-link @click.stop.native  :href="`/v1/prescription/look_event/`"> <span v-text="item2.name"></span> </el-link>

事件修饰符

除了.stop之外,Vue v-on还提供了其它事件修饰符

.once

只响应事件一次,例如@click.once="fun4",表示仅第一次点击才会执行fun4

这里, @event等同于v-on:event,vue事件绑定的两种格式。

.self

仅当事件由元素自身(比如不是子元素)触发时,才响应事件。例如,上述实验1的基础上,修改@click="fun3"为@click.self="fun3",那么,点击div4所在div时,div3所在div不会回调fun3,即不会响应点击事件

.prevent

某些元素(如带href属性的超链接元素a)拥有自身的默认事件(事件冒泡结束之后开始执行,并且不受.stop影响),如果不希望元素响应默认事件,可以给元素事件增加.prevent。常见的屏蔽右键默认菜单

.passive

每次事件产生,浏览器都会去查询一下是否调用了preventDefault阻止该次事件的默认动作,为事件设置.passive修饰符就是为了告诉浏览器,不用查询了,我们没用preventDefault阻止默认动作。

.capture

表示在“事件捕获阶段”监听事件,即在事件捕获阶段回调事件处理函数。例如,在上述实验1的基础上,修改@click="fun3"为@click.capture="fun3",点击div4时,将输出如下

.native

用于在某个组件的根元素上监听一个原生事件。

### 如何在 el-tabs 组件中阻止事件冒泡 在使用 `el-tabs` 组件时,如果需要阻止事件冒泡,可以参考 Vue事件修饰符以及 Element-UI 的相关特性。以下是具体解决方案: 在 Vue 中,可以通过 `.stop` 事件修饰符来阻止事件冒泡[^2]。例如,在 `el-tabs` 或其子组件的事件绑定中添加 `.stop` 修饰符即可实现阻止事件冒泡的功能。 ```vue <el-tabs v-model="tabName"> <el-tab-pane label="用户管理" name="first" @click.native.stop="handleTabClick"></el-tab-pane> <el-tab-pane label="配置管理" name="second" @click.native.stop="handleTabClick"></el-tab-pane> </el-tabs> ``` 上述代码中,`.native` 用于监听组件根元素的原生事件,而 `.stop` 则用于阻止事件冒泡[^4]。 此外,当需要对 `el-dialog` 或其他嵌套组件进行类似操作时,也可以采用相同的方式。例如,在 `el-dialog` 的按钮点击事件阻止事件冒泡: ```vue <el-dialog title="提示" :visible.sync="dialogVisible" width="30%"> <span>这是一段信息</span> <span slot="footer" class="dialog-footer"> <el-button @click.stop="dialogVisible = false">取 消</el-button> <el-button type="primary" @click.stop="dialogVisible = false">确 定</el-button> </span> </el-dialog> ``` 通过这种方式,可以确保点击 `el-dialog` 内部按钮时不会触发外部父组件的点击事件--- ### 注意事项 1. 如果直接在 `el-tabs` 上绑定事件并希望阻止冒泡,则需要结合 `.native` 和 `.stop` 修饰符。 2. 在某些情况下,可能需要手动调用 `event.stopPropagation()` 方法以更灵活地控制事件传播行为。 ```javascript function handleTabClick(event) { event.stopPropagation(); // 手动阻止事件冒泡 console.log(&#39;Tab clicked&#39;); } ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值