事件修饰符 vue中 为a标签添加点击事件不跳转href

本文深入探讨了事件修饰符.prevent、.stop、.capture、.self和.once的使用方法,以及按键修饰符如何响应特定键盘事件。通过实例展示了如何在前端开发中有效控制事件的传播和响应。

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

事件修饰符

运用事件修饰符 .prevent 阻止默认行为

 <a href="https://www.baidu.com/" @click.prevent="aClick">点我</a>

以此类推

运用事件修饰符 .stop 阻止冒泡
只执行 start 不执行 end

<div id="app" @click="end">
    <input type="button" value="开始" @click.stop="start">
</div>

运用事件修饰符 .capture 捕获机制
点击按钮 先执行 end 再执行 start

<div id="app" @click.capture="end">
    <input type="button" value="开始" @click="start">
</div>

运用事件修饰符 .self 只点击自身才触发
点击按钮不触发end事件,只有点击div才可以触发

<div id="app" @click.self="end">
    <input type="button" value="开始" @click="start">
</div>

运用事件修饰符 .once 只执行一次
点击按钮只触发一次start事件,第二次没反应

<input type="button" value="开始" @click.once="start">

.self 和 .prevent 都有阻止默认冒泡的功能。
.self 只能使自己不冒泡,但是.prevent 可以使除自己外的作用都不冒泡

按键修饰符

点击回车添加数据

<input type="text" v-model="name" @keyup.enter="add">

或者

Vue.config.keyCodes.zmenter = 13;
<input type="text"  v-model="name" @keyup.zmenter="add">
### Vue.js 事件修饰符的使用方法 Vue.js 提供了一组简洁的事件修饰符,用于简化常见的 DOM 事件处理逻辑。这些修饰符可以直接附加到 `v-on` 指令上,帮助开发者快速实现特定的功能。 #### 常见事件修饰符及其作用 以下是 Vue.js 中常用的事件修饰符以及它们的作用: 1. **`.stop`** 阻止事件继续传播(即阻止事件冒泡)。此修饰符适用于需要防止事件冒泡的情况[^1]。 2. **`.prevent`** 调用 `event.preventDefault()` 方法,通常用来阻止默认行为。例如,阻止 `<a>` 标签跳转或者表单提交刷新页面的行为。 3. **`.capture`** 添加事件监听器时采用捕获模式。这意味着事件会在捕获阶段被触发,而是在冒泡阶段[^2]。 4. **`.self`** 只有当事件是从绑定元素本身触发时才执行处理器。如果事件是由子元素触发,则会调用该事件处理器。 5. **`.once`** 确保事件只触发一次。之后即使再次发生相同的事件也会再响应。 6. **`.passive`** 表明事件处理器永远会调用 `preventDefault`。这有助于浏览器优化滚动性能,尤其是在移动端设备上。 #### 示例代码展示 以下是一些常见场景下的示例代码: ##### 使用 `.stop` 和 `.prevent` ```html <div id="app"> <!-- 防止 a 标签跳转 --> <a @click.prevent="handleClick" href="http://www.baidu.com">链接</a> <!-- 阻止事件冒泡 --> <button @click.stop="innerButtonClicked">内部按钮</button> </div> <script> new Vue({ el: '#app', methods: { handleClick() { console.log('点击了链接'); }, innerButtonClicked() { console.log('点击了内部按钮'); } } }); </script> ``` ##### 结合 `$event` 对象获取更多信息 ```html <div id="app"> <p @mousemove="logCoordinates($event)">移动鼠标可以看到坐标变化</p> </div> <script> new Vue({ el: '#app', methods: { logCoordinates(event) { console.log(`X: ${event.clientX}, Y: ${event.clientY}`); } } }); </script> ``` #### 官方文档中的推荐实践 官方文档建议尽可能使用原生 JavaScript 的方式来处理复杂事件逻辑,而非过度依赖修饰符。这是因为过多的修饰符可能会降低代码可读性和维护性[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值