vue怎么给循环的元素 通过选中动态添加类名
时间: 2024-03-07 18:50:45 浏览: 163
vue中v-for循环选中点击的元素并对该元素添加样式操作
可以使用 Vue.js 的 v-bind 指令和计算属性来动态添加类名。具体步骤如下:
1. 在循环的元素上使用 v-bind 绑定一个 class 属性,该属性的值为一个对象;
2. 对象的键为类名,值为一个布尔值,通过计算属性来动态设置;
3. 当点击某个元素时,通过事件绑定调用一个方法来切换该元素的选中状态,同时更新计算属性的值。
具体代码如下:
```html
<template>
<ul>
<li v-for="(item, index) in list" :key="index" :class="{ selected: isSelected(index) }" @click="toggleSelected(index)">
{{ item }}
</li>
</ul>
</template>
<script>
export default {
data() {
return {
list: ['item1', 'item2', 'item3'],
selectedList: []
}
},
methods: {
toggleSelected(index) {
if (this.selectedList.includes(index)) {
this.selectedList.splice(this.selectedList.indexOf(index), 1)
} else {
this.selectedList.push(index)
}
}
},
computed: {
isSelected() {
return (index) => this.selectedList.includes(index)
}
}
}
</script>
<style>
.selected {
background-color: #ccc;
}
</style>
```
上面的代码中,循环的每个 li 元素上使用 v-bind:class 绑定一个 class 属性,属性值为一个对象,该对象的键为 "selected",值为一个计算属性 isSelected 的返回值。当点击某个元素时,会调用 toggleSelected 方法来切换该元素的选中状态,并更新 selectedList 数组。isSelected 计算属性会根据 selectedList 数组中的值来动态计算每个元素是否被选中,从而动态添加或删除 "selected" 类名。最终效果为,当点击某个元素时,该元素背景色会变成灰色,表示被选中。
阅读全文