vue.js - Vuejs单击修饰符不适用于具有单击事件的另一个元素内的元素
问题描述
我有一个button
带有click="buttonMethod()"
事件card
的dblclick="cardMethod()"
事件。
问题
我需要阻止所有按钮单击传播到父级(卡),但是.stop
修饰符.prevent
不起作用,单击按钮会触发这两种方法。
在下面的演示中,您甚至可以看到从按钮传播到卡片的点击(出现波纹)
- 在按钮上使用
click.stop.prevent
没有帮助。 - 在卡片上使用
dblclick.self
也无济于事,因为它可以防止点击所有孩子,甚至是文本,这是不可取的。
代码
演示:https ://codepen.io/AlekseiHoffman/pen/LYVKeBE?editors=1011
<v-card @dblclick="cardMethod()" v-ripple>
<div>
<h2>Title</h2>
<h3>Description</h3>
</div>
<v-btn @click.stop.prevent="buttonMethod()">
button
</v-btn>
</v-card>
解决方案
我会将@dblclick 事件从父 v-card 中取出,并将其仅放在您希望可点击的区域中。在这种情况下,div 包含按钮旁边的所有内容。
<div id="app">
<v-app id="inspire">
<h1>See events in the console</h1>
<v-card v-ripple class="card elevation-8">
<div @dblclick="cardMethod()">
<h2>Title</h2>
<h3>Description</h3>
</div>
<v-btn @click.prevent.stop="buttonMethod()" dark color="blue">
button
</v-btn>
</v-card>
</v-app>
</div>
推荐阅读
- javascript - 试图让 Three.js Boxplot 响应式
- node.js - Mongoose:如何按值分组并存储在单独的数组中
- c++ - Serial WriteFile 在完成前返回
- swift - 数据在 Firebase 中的保存顺序与 SwiftUI 的传输顺序不同
- c# - 如何显示加载在 html 页面(Blazor ServerSide)上的变量中的 .svg 文件?
- azure - 如何提高 Azure 存储帐户的可用性?
- c# - JSON到C#,反序列化对象或数组的属性
- huawei-mobile-services - HMS 推送套件的 BadgeNotification 中的类是什么?
- arrays - 在 Postman 中验证对象数组
- botframework - 无法在 azure bot 服务中启用直线应用服务扩展