<ul class="view-block">
<li class="view-block__item" :class="{active: sortListOpened.sort}">
<a class="view-block__link btn-column js-catalog-view" @click="changeView($event, 'sort')">
<span></span>
<span></span>
<span></span>
</a>
</li>
<li class="view-block__item" :class="{active: sortListOpened.sort}">
<a class="view-block__link btn-column btn-block js-catalog-view" @click="changeView($event, 'sort')">
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</a>
</li>
</ul>
$('.js-catalog-view').click(function() {
if ($(this).parent().hasClass("active")) {
return false;
}
$(this).parent().siblings().removeClass('active');
$(this).parent().addClass('active');
$('.main-catalog-list').toggleClass('catalog-block');
return false;
});
data () {
return {
sortListOpened: {
sort: false,
filter: false
}
}
},
methods: {
changeView(e, kind) {
let $this = $(e.target);
this.sortListOpened[kind] = !this.sortListOpened[kind];
if (!this.sortListOpened.sort) {
return;
}else {
$this.parent().siblings().removeClass('active');
$this.parent().addClass('active');
$('.main-catalog-list').toggleClass('catalog-block');
}
}
},
data: () => ({
active: null,
items: [
{ text: 'hello, world!!', numSpans: 3, classes: [] },
{ text: 'fuck the world', numSpans: 6, classes: [ 'yyy' ] },
{ text: 'fuck everything', numSpans: 0, classes: [ 'zzz' ] },
],
}),
<ul>
<li v-for="(n, i) in items" :class="{ active: active === i }">
<a :class="[ 'xxx', ...n.classes ]" @click="active = i">
{{ n.text }}
<span v-for="s in n.numSpans"></span>
</a>
</li>
</ul>
.active {
background: red;
}
this.data
), будут - текущий выбранный элемент. Как его идентифицировать - решайте сами, по созданному id, url'у, или индексу. Затем в шаблоне по условию выводим класс или нет.