我有一个代码,其中我在button
上执行click
,它会立即触发addEventListener("click")
,我希望阻止它立即触发。正常情况下,我可以看到console.log
,直到第二次单击,因为当我第一次单击时,我添加了侦听器,第一次单击后,它已经在侦听显示console.logs的单击事件
我该如何预防呢?
这是我的生活代码:
<template>
<div id="app">
<button @click="addEvent">add event body</button>
</div>
</template>
<script>
import HelloWorld from './components/HelloWorld.vue';
export default {
name: 'App',
methods: {
addEvent() {
document.body.addEventListener('click', this.doSomething);
},
doSomething() {
console.log('click');
},
},
};
2条答案
按热度按时间mrfwxfqh1#
有几个解决方案你可以使用!但我相信stopPropagation()将最适合你!我还添加了click.once到您的addEvent函数,因为我假设您只想调用它来添加事件侦听器!
以下是文档以供参考!https://v2.vuejs.org/v2/guide/events.html#Event-Modifiers https://developer.mozilla.org/en-US/docs/Web/API/Event/stopPropagation
mum43rcc2#
你需要使用
stop
修饰符来实现这个行为。它和event.stopPropagation()
一样,但是它是一种处理事件的有效方法:https://vuejs.org/guide/essentials/event-handling.html#event-modifiers交互式示例:https://stackblitz.com/edit/vue-nknkm9?file=src%2FApp.vue