You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Vue中v-for循环生成的指定元素添加active类?

解决方案

核心思路是先把需要标记为活跃的id预处理成方便查询的结构,再配合Vue的动态类绑定语法实现效果,具体实现如下:

步骤1:预处理活跃id集合

为了避免每次循环都遍历接口返回的数组查询,建议在计算属性中把活跃项的id提取为Set结构,同时统一转换为数字类型,避免和v-for生成的数字索引出现类型不匹配的问题:

// 假设接口返回的活跃数据存在变量 activeItems 中
// Vue2 选项式写法
computed: {
  activeIdSet() {
    return new Set(this.activeItems.map(item => Number(item.id)))
  }
}

// Vue3 组合式写法
import { computed } from 'vue'
const activeIdSet = computed(() => new Set(activeItems.value.map(item => Number(item.id))))

步骤2:修改模板的动态类绑定

利用Vue的:class语法,在v-for循环时判断当前索引是否在活跃id集合中,匹配就自动添加active类:

<div class="inventory">
  <div 
    class="item" 
    v-for="index in 14" 
    :key="index"
    :class="{ active: activeIdSet.has(index) }"
  ></div>
</div>

可选简化写法

如果你的库存项数量很少,也可以不预处理Set,直接在模板中做判断:

<div 
  class="item" 
  v-for="index in 14" 
  :key="index"
  :class="{ active: activeItems.some(item => Number(item.id) === index) }"
></div>

内容的提问来源于stack exchange,提问作者Tbmluijten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 09:57:03