说明:
方法一: v-for时候的index索引,给每行绑定事件点击事件,点击当行是获取此行索引index并赋值给currentIndex
,使用v-bind:
绑定class,当index===currentIndex
Dom元素有active的class,颜色变红。
方法二:在动态绑定class对象使用了三元表达式,其他都和方法一一样,使用三元表达式判断索引是否等于当前元素的索引,如果是返回style定义好的样式,否则为空,也就是变回原样。
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.active{
color: red;
}
</style>
</head>
<body>
<div class="app">
<!-- 方法一:对象写法 -->
<ul>
<li v-for="(item,index) in movies" :key="index" :class="{active:index==currentIndex}" @click = "changeColor(index)">{{index}}--{{item}}</li>
</ul>
<!-- 方法二:三元表达式写法 -->
<ul>
<li v-for="(item,index) in movies" :key="index" :class="index==currentIndex?'active':''" @click = "changeColor(index)">{{index}}--{{item}}</li>
</ul>
</div>
<script src="vue.js"></script>
<script type="text/javascript">
const app = new Vue({
el:'.app',
data(){
return{
currentIndex : 0,
movies:['海贼王','火影忍者','七龙珠','复仇者联盟']
}
},
methods:{
changeColor(index){
console.log(index);
this.currentIndex = index
}
}
})
</script>
</body>
</html>