【问题标题】:Using this (the one being clicked ) with VueJs在 VueJs 中使用这个(被点击的那个)
【发布时间】:2018-08-12 16:19:34
【问题描述】:

我正在学习 vueJS,并且有 2 个可点击的 div 共享相同的方法。因此,当我单击其中一个 div 时,它们都会发生动作。

在被点击的 div(这个 div)上执行@click 的最佳方式是什么。

所以我试图只在被点击的那个(div)上打开和关闭一个菜单。

<div class="row">
  <div class="col-sm-3">
    <div class="mainbox-wrapper">
      <div class="mainbox">text</div>
      <div class="selectbox" @click="actionMenu" id="foo" ref="foo">select box</div>
      <div class="menu" v-show="isShow">select box</div>
    </div>
  </div>
  <div class="col-sm-3">
    <div class="mainbox-wrapper">
      <div class="mainbox">text</div>
      <div class="selectbox" @click="actionMenu" id="bar" ref="bar">select box</div>
      <div class="menu" v-show="isShow">select box</div>
    </div>
  </div>
</div>

js

  methods:{
    actionMenu(event){
      let targetId = event.currentTarget.id;
      this.isShow = !this.isShow;
    }
  }

【问题讨论】:

    标签: vue.js


    【解决方案1】:

    代替v-show 指令,您可以切换相关div 的类:

    actionMenu(event){
       event.target.nextElementSibling.classList.toggle('d-none');
    }
    

    d-none class 适用于 bootstrap 4。如果您正在使用它,那很好,但如果您不使用,那么您可以添加自己的 class。

    .d-none {
      display: none; /* bootstrap uses !important as well */
      /* if you wish, you can add !important */
    }
    

    【讨论】:

      【解决方案2】:

      与其使用@click,不如使用 v-on, 你可以了解更多关于 HTML 监听器的信息here

      您的 HTML:

      <div class="col-sm-3">
         <div class="mainbox-wrapper">
         <div class="mainbox">text</div>
            <div class="selectbox" v-on="click: onClick" id="foo" ref="foo">select box</div>         
        </div>
      </div>
      

      在你的 js 中

      methods: {
              onClick: function (e) {
                console.log(e.currentTarget.id;)
                }
          }
      

      【讨论】:

      • 如何将它绑定到被点击的 div 或按钮?
      • 在 HTML 中指定要调用的方法。在我的例子中,v-on="click: &lt;anyMethodName&gt; "
      猜你喜欢
      • 1970-01-01
      • 2013-09-23
      • 1970-01-01
      • 1970-01-01
      • 2019-05-08
      • 2020-12-22
      • 1970-01-01
      • 2019-03-27
      • 1970-01-01
      相关资源
      最近更新 更多