v-for循环时,我只需要点击到的元素做出相应反应,其他的元素不变;但是往往是我们往元素上添加样式导致所有v-for循环出的元素都会变化。
这里的话可以我们使用index索引,当点击一个元素时,将该元素的index索引赋给一个变量,如果该变量和当前元素绑定index相等时,则通过3目运算符来判断,如果相等就启用不相等就给空或者其他属性。
<template #default>
<div
class="van-cell"
v-for="(item, index) in datas.regions.slice(1)[mun].subFilters"
:key="index >
<div class="van-cell__title" @click="clc(index)">
<span :style="isindex==index?{ color: 'red' } :'' ">{{ item.name }}</span>
<i
:style="isindex==index?{
float: 'right',
color: 'red',
'font-style': 'normal',
display: block
}:style='display:none'>✔</i>
</div>
</div>
</template>
<script>
data() {
return {
datas: {},
mun: 0,
isindex: '',
}
},
methods: {
clc(index) {
this.isindex = index
},
},
</script>
本文介绍如何在Vue中利用v-for循环和index实现点击元素高亮的效果。通过点击元素获取其index,并将index保存在数据中,然后在模板中使用三元运算符判断当前元素的index是否与保存的index相等,从而动态改变元素的样式。这种方法能确保只有被点击的元素发生变化,而不会影响其他元素。
4235

被折叠的 条评论
为什么被折叠?



