vue实现点击一个循环的li更改其背景色

li由遍历得到,实现点击当前li更改背景色,其他的li样式不变

// 使用三目运算符 :class
<template>
	<div>
		<ul>
			<li v-for="item in info" :key="item.id" @click="change(item)" :class='item.id==selected?"selected":""'>{{item.name}}</li>
		</ul>
	</div>
</template>
export default {
  data() {
    return {
      info:[{
        id:1,
        name:'张三'
      },{
        id:2,
        name:'李四'
      },{
        id:3,
        name:'王五'
      },{
        id:4,
        name:'丁二'
      },{
        id:5,
        name:'魏潇'
      }],
      selected:-1
    }
  },
  methods: {
    change(item){
      console.log(item)
      this.selected=item.id;
    }
  }
}
.selected{
  color:red;
}
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用 Vue 的 v-bind:class 指令实现这个效果。具体实现步骤如下: 1. 在 data 定义一个变量,用于保存当前被选li 的索引: ``` data() { return { selectedIndex: -1, // 初始值为 -1,表示没有任何 li 被选 ... } } ``` 2. 在模板遍历 li,为每个 li 绑定一个点击事件,同时根据当前被选的索引,为 li 动态添加类名: ``` <ul> <li v-for="(item, index) in list" :key="index" :class="{ active: selectedIndex === index }" @click="handleClick(index)"> {{ item }} </li> </ul> ``` 其,active 是用来表示选状态的类名,handleClick 是点击事件的处理函数,它接收一个参数 index,表示当前点击li 的索引。 3. 实现 handleClick 方法,根据当前被选的索引,更新 selectedIndex 的值: ``` methods: { handleClick(index) { if (this.selectedIndex === index) { // 如果当前点击的是已选li,则取消选状态 this.selectedIndex = -1; } else { // 如果当前点击的是未选li,则将其设为选状态 this.selectedIndex = index; } }, ... } ``` 这样,当用户点击一个 li 时,会先判断它是否已经被选,如果是,则取消选状态;如果不是,则将其设为选状态,同时取消之前选li 的选状态。 最后,为选状态的 li 添加样式即可,比如: ``` <style> .active { background-color: #ccc; } </style> ``` 这样,用户点击一个 li 时,它的背景色会变成灰色,再次点击时会取消选状态,背景色变回原来的颜色。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值