【问题标题】:Add click event添加点击事件
【发布时间】:2021-10-12 08:56:59
【问题描述】:

我想问一下 Vue 中的点击事件。 我有一个包含 div 和按钮的跨度。当我单击按钮 (thisButton) 时,它运行良好,但跨度 (thisMask) 在单击时似乎不起作用。我还添加了发射事件,当我单击 thisButton 时,它也会触发发射事件 thisMaskClicked。但是 console.log 只是返回 thisButton 所拥有的。我错过了什么吗?

<span class="this_mask" @click="thisMask">
  <div class="this__wrap">
    <div class="this__text">
      <button class="this__button" @click="thisButton"></button>
    </div>
  </div>
</span>

this.js

thisMask () {
  this.$emit('thisMaskClicked')
  console.log("This Mask Executed")
},
thisButton() {
  this.$emit('thisButtonClicked')
  console.log("This Button Clicked")
}

【问题讨论】:

  • @click= 不是标准的 Javascript 或 HTML。您是否使用某种模板引擎或框架?如果是这样,请在您的问题中标记它。
  • 是的,实际上我使用 vuejs @ADyson
  • 试试&lt;div&gt; 而不是&lt;span&gt;
  • 感谢您的回复。它仍然没有工作@StevenSiebert

标签: javascript html vue.js


【解决方案1】:

您正在寻找的是 self 修饰符。

如果父节点和子节点注册了相同类型的事件,那么当该类型事件调度时,就会调用父节点和子节点的处理程序。

这是一个例子fiddle

您的代码应如下所示:

<span class="this_mask" @click="thisMask">
  <div class="this__wrap">
    <div class="this__text">
      <button class="this__button" @click.self="thisButton"></button>
    </div>
  </div>
</span>

代码未经测试,所以我不确定您是否必须在示例中附加到 buttonspan

【讨论】:

  • 感谢您回答@null。您附加的小提琴示例符合我的期望,但是当我尝试在本地实现它时,使用.self 的点击事件变得无法读取。
  • “不可读”是什么意思?
  • 嗨@null 实际上您的解决方案运行良好。由于使用的样式,它不可读。谢谢!
猜你喜欢
  • 2023-03-15
  • 1970-01-01
  • 2013-02-11
  • 1970-01-01
  • 2018-12-16
  • 2023-03-17
  • 1970-01-01
  • 2017-03-12
相关资源
最近更新 更多