I have multiple list items that I want to toggle active classes on when they are being clicked on.
<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>
I already have a setFilter click function where I can add extra functionality to activate the class onClick.
setFilter: function(facet, value) {
// Facet for style of beer(search filter)
this.helper.addDisjunctiveFacetRefinement(facet, value).search();
},
My question is how can select the specific li element that was clicked on and called the with setFilter method?
I want to set a variable for the active class false or true for each single li element that has been clicked (or not clicked).
You can directly pass the event and the events target in your function. The target is the element you clicked on.
HTML:
<ul id="demo">
<li v-on="click: onClick">Trigger a handler</li>
<li v-on="click: n++">Trigger an expression</li>
</ul>
JS:
var vue = new Vue({
el: '#demo',
data: {},
methods: {
onClick: function (e) {
var clickedElement = e.target;
}
}
})
With your element you can do what you want. For example, if you use jQuery:
$(clickedElement).siblings().removeClass('active');
$(clickedElement).addClass('active');
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With