vue循环出来的数据,怎么点击的时候,给当前的变色呢?

vue循环出来的数据,怎么点击的时候,给当前的变色呢?
我页面是这样写的

       <ol v-if="tooglezhi" class="ol_one">
                        <li v-for="(item,key) in arr" 
                               @click="son(item,key)"><span></span>{{item}}</li>
                    </ol>

clipboard.png

在data中

clipboard.png

clipboard.png

我想要的效果是

clipboard.png

我点击其中一个的时候 其中的变色,怎么用vue实现呢 我之前一直是用jquery写的

阅读 7.3k
4 个回答

获取到的data,你可以自定义个变量,isActive,默认都是false,当你点击的时候,给当前这个isActive赋值为true就可以了,li上在绑定一个class名
<li v-for="(item,key) in arr" click="son(item,key)" :class="{'active': item.isActive}"><span></span>{{item}}</li>

data:index:0


<li v-for="(item,key) in arr" @click="key=index" :class="key==index?'active':''"><span></span>{{item}}</li>

加一个class:

<li v-for="(item,key) in arr"  @click="son(item,key)" :class='key==selected?"selected":""'><span></span>{{item}}</li>

data(){
    return{
        selected:-1
    }
},
methods:{
    son(item,key){
        this.selected=key;
    }
}

.selected{
    color:red;
}
<div :class="{active: 'currentKey === key'}"></div>
data() {
    currentKey: 0
},
methods: {
    son(key) {
        this.currentKey =  key
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题