v-for循环中有很多列表,当我点击其中一个列表后,出现图片在该列表中,同时该列表排在所有列表的最前面,剩下的列表排在后面
时间: 2024-05-01 09:21:52 浏览: 37
你可以在`v-for`中使用`v-bind:key`来绑定每个列表的唯一标识符,然后在点击列表时,将该列表从原来的位置删除,再添加到列表的最前面,可以使用JavaScript中的`splice`函数实现。同时,你需要使用`v-bind:class`来为该列表添加一个特殊的CSS类,用于显示图片。下面是一个示例代码:
```html
<template>
<div>
<div v-for="(item, index) in items" :key="item.id" :class="{ 'active': item.active }" @click="moveToTop(index)">
{{ item.name }}
</div>
</div>
</template>
<script>
export default {
data() {
return {
items: [
{ id: 1, name: 'Item 1', active: false },
{ id: 2, name: 'Item 2', active: false },
{ id: 3, name: 'Item 3', active: false },
{ id: 4, name: 'Item 4', active: false },
{ id: 5, name: 'Item 5', active: false },
],
};
},
methods: {
moveToTop(index) {
const item = this.items.splice(index, 1)[0];
item.active = true;
this.items.unshift(item);
},
},
};
</script>
<style>
.active {
background-color: yellow;
}
</style>
```
在上面的代码中,`moveToTop`方法用于将列表移动到最前面。该方法首先使用`splice`函数将该列表从原来的位置删除,然后将该列表的`active`属性设置为`true`,表示该列表被选中,最后使用`unshift`函数将该列表添加到列表的最前面。在模板中,我们使用`v-bind:class`绑定`active`类,当`active`属性为`true`时,该类会被添加,从而显示图片。
阅读全文