Vue语法之v-for与v-bind结合

本文介绍了在Vue.js中如何通过v-for指令动态改变列表项的高亮状态。方法一是利用v-bind绑定class,通过点击事件获取索引并更新currentIndex,使对应索引的列表项变红。方法二是使用三元运算符动态绑定class,根据索引与currentIndex的比较来切换样式。示例代码详细展示了这两种实现方式。
摘要由CSDN通过智能技术生成

说明:

方法一:​ v-for时候的index索引,给每行绑定事件点击事件,点击当行是获取此行索引index并赋值给currentIndex,使用v-bind:绑定class,当index===currentIndexDom元素有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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值