一. v-for循环情况下动态添加:
1.v-for循环元素,绑定key
2.在data中创建标识isActive=0,这是为了初始化第一个标题为active
3.监听单击事件触发方法,传入点击元素的index改变标识
4.绑定class属性,判断当(index===标识)时添加active-class
<ul>
<li v-for="(item,index) of list" :key="index"
:class="{active: isActive === index}"
@click="changeClass(index)">{{item}}</li>
</ul>
data() {
return {
list: ["标题一","标题二","标题三"],
isActive: 0
}
},
methods: {
changeClass(i) {
this.isActive = i;
}
}
.active {
color: red;
}
二.非循环情况下动态添加:
跟方法一循环情况同理,只不过将循环的动态index更改为固定的编号,将class的判断条件更改为(isActive === 编号)。同样的,在点击事件触发时传入编号更改标识。
<ul>
<li :class="{active: isActive === 1}" @click="changeClass(1)">标题一</li>
<li :class="{active: isActive === 2}" @click="changeClass(2)">标题二</li>
<li :class="{active: isActive === 3}" @click="changeClass(3)">标题三</li>
</ul>
data() {
return {
isActive: 1
}
},
methods: {
changeClass(i) {
this.isActive = i;
}
}