Vue实现v-for生成标签后默认展示第一个

  • Post author:
  • Post category:vue


<template>
	<div>
		<ul>
			<li v-for="(item, index) in list1" @mouseenter="handleMouseEnter" :id="index"></li>
		</ul>
		<div>
			<div v-for="(item, index) in list2" v-show="isActive == index" >{{ item }}</div>
		</div>
	</div>
</template>
<script>
export default{
	data(){
		return {
			list1: [1, 2, 3, 4],
			list2: [1, 2, 3, 4],
			isActive: 0
		}
	},
	methods: {
		handleMouseEnter(e){
			this.isActive = e.target.id
		}
	}
}
</script>

需求:根据li便签切换下方div展示内容,默认显示为第一个li标签内容。
思路:li生成的时候添加id,利用mouseenter事件触发的时候,赋值给isActive,isActive初始值能确定默认显示内容。
由于mouseenter事件阻住捕获,所以e.target和e.currenttarget相同,没办法绑定事件到ul上,有点耗费性能。

现在有个更好的方法,不用赋值index给id。

@mouseenter="handleMouseEnter($event,index)
把index作为参数传到方法里面执行赋值给isActive



版权声明:本文为qq_24243695原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。