Vue 的事件修饰符

本文介绍了Vue中事件修饰符的用法,如.prevent阻止默认行为,.stop防止事件冒泡,.once确保事件只触发一次。在示例中,一个超链接的点击事件被阻止了其默认的页面跳转,展示了事件修饰符在实际应用中的效果。

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

Vue 时间修饰符

知识点:

事件修饰符

​ @click.prevent=“showInfo” 可以阻止默认事件。

​ .stop 阻止事件冒泡。

​ .once 事件只触发一次。

​ .capture 使用事件的捕获模式。

​ .self 只有event.target是当前操作的元素时才触发事件。

​ .passive 事件的默认行为立即执行,无需等待时间回调执行完毕。

需求:一个超链接包裹了一个监听事件,点击之后,阻止原来超链接跳转。

<body>
    <!-- 
        事件修饰符
        @click.prevent="showInfo" 可以阻止默认事件。
              .stop 阻止事件冒泡。
              .once 事件只触发一次。
              .capture 使用事件的捕获模式。
              .self 只有event.target是当前操作的元素时才触发事件。
              .passive 事件的默认行为立即执行,无需等待时间回调执行完毕。
     -->
    <div id="root">
        <h2>欢迎来到{{name}}学习</h2>
        <a href="https://www.baidu.com/" @click.prevent="showInfo">点我提示1</a>
    </div>

    <script type="text/javascript">
        const vm = new Vue({
            el: "#root",
            data() {
                return {
                    name: "百度"
                }
            },
            methods: {
                showInfo(e) {
                    alert("同学你好!")
                },
            }
        })
    </script>

</body>

ps:前三个修饰符比较重要且常用。

### 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
发出的红包

打赏作者

YonChao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值