Javascript Vuejs是否正在获取事件调用的元素?

Javascript Vuejs是否正在获取事件调用的元素?,javascript,jquery,json,vue.js,Javascript,Jquery,Json,Vue.js,我有多个列表项,我想在单击活动类时打开它们 <ul class="list-body"> <li v-on="click: setFilter('style', 'pils')" v-class="active: isActive">Pils</li> <li>Dubbel</li> <li>Tripel</li> <li v-on="click: setFilter('st

我有多个列表项,我想在单击活动类时打开它们

<ul class="list-body">
    <li v-on="click: setFilter('style', 'pils')" v-class="active: isActive">Pils</li>
    <li>Dubbel</li>
    <li>Tripel</li>
    <li v-on="click: setFilter('style', 'Quadrupel')">Quadrupel</li>
    <li>Wit</li>
</ul>
我的问题是如何使用
setFilter
方法选择单击并调用的特定
li
元素


我想为已单击(或未单击)的每个
li
元素的活动类
false
true
设置一个变量。

您可以直接在函数中传递事件和事件目标。 目标是您单击的元素

<ul class="list-body">
    <li v-on="click: setFilter('style', 'pils')" v-class="active: isActive">Pils</li>
    <li>Dubbel</li>
    <li>Tripel</li>
    <li v-on="click: setFilter('style', 'Quadrupel')">Quadrupel</li>
    <li>Wit</li>
</ul>
HTML:

有了你的元素,你可以做你想做的事。 例如,如果使用jQuery:

$(clickedElement).siblings().removeClass('active');
$(clickedElement).addClass('active');

在我的示例中,我使用了一个简单的问题:单击:setFilter('style','pils'),因为我传递的参数事件处理程序不起作用。如何使它像带参数的函数一样工作?我是否以某种方式将事件作为参数传递?不要尝试传递元素本身和参数。您可以从onClick方法调用setFilter并在那里分析单击的元素。这在Vue 2.0中似乎不起作用。我尝试使用v-on:click=“bla();”,就像文档建议的那样,但是,在工作时,发送的事件是未定义的。@TomásCot我通过v-on:click=“bla($event)”获得了它的工作,但是我猜,如果提供了该事件,就没有必要传递它。谢谢@KonradViltersten,这不是必需的,但是当您还需要传递其他参数时,知道这一点可能会很方便。
var vue = new Vue({
  el: '#demo',
  data: {},
  methods: {
    onClick: function (e) {
      var clickedElement = e.target;
    }
  }
})
$(clickedElement).siblings().removeClass('active');
$(clickedElement).addClass('active');