v-for循环出的列表如何实现每一项单独展开收起

可以同时展开多个各个互不影响

data中声明要循环的数据、当前的下标数组类型(array)
思路:判断当年下标是否在数组下标中来控制展开收起,不存在就将该下标加入数组,再点击一次这个下标则删去,数组中无该下标就显示收起。

<div class="content" v-for="(t,index) in List" :key="t.id">
   <div class="desc">
      <span class="btn" 
          :style="{'color': (thisIndex.indexOf (index)!=-1? '#0195ff':'#999999')}" 
          @click="show(index)">
        {{thisIndex.indexOf (index)!=-1 ? '收起' : '展开'}}
      </span>
      <i :class="thisIndex.indexOf (index) != -1 ? 'el-icon-d-arrow-left' : 'el-icon-d-arrow-right'" 
         :style="{'color': (thisIndex.indexOf (index)!=-1? '#0195ff':'#999999')}"></i>
      <div class="content" v-show="thisIndex.indexOf (index)!=-1">{{t.content}}</div>
   </div>
</div>
data() {
    return{
     List:[],
      thisIndex: []   如果想要初始化时就展开 就将下标放在thisIndex里面
    }  
  },
  methods: {
    show(index) {
      if(this.thisIndex.indexOf(index) == -1){
        this.thisIndex.push(index)
      }else{
        this.thisIndex = this.thisIndex.filter(item => item != index)
      }
    }
  }

[vue]v-for循环出的列表如何实现每一项单独展开收起_vue循环展开-CSDN博客

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 要实现v-for循环默认显示第一项,可以在data中设置一个active变量,并将其初始值设为0,表示默认选中第一项。然后在循环的标签中使用:class属性来判断当前项是否为选中项,如果是则添加activeClass类名,否则不添加类名。在点击事件中,通过改变active的值来改变选中项的样式。具体代码如下所示: ``` <template> <div> <div v-for="(item, index) in 数组名" :key="index" :class="active === index ? 'activeClass' : ''"> <div @click="change(index)"></div> </div> </div> </template> <script> export default { data() { return { active: 0 // 默认选中第一项 } }, methods: { change(index) { this.active = index; // 把index值赋给active,点击改变样式 } } } </script> <style> .activeClass { color: #ca151e; border: 1px solid #ca151e; } </style> ``` 在上述代码中,v-for循环遍历数组名,使用:class属性来判断当前项是否为选中项,如果是则添加activeClass类名,否则不添加类名。点击事件change(index)会将当前项的索引值赋给active,从而改变选中项的样式。 #### 引用[.reference_title] - *1* [v-for循环,点击更改按钮样式,默认选中第一个](https://blog.csdn.net/weixin_41599291/article/details/92825484)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [vue设置v-for遍历,默认选中第一个样式,点击切换时,样式选中一起发生变化](https://blog.csdn.net/qq_36509946/article/details/119998632)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值