vue多选改变选中样式并获取id值
一个本来觉得很简单的问题,但也是折腾了好一会,以此记录下来。结果:根据渲染的结果实现点击更改样式,并获取选中的id<div id="main"><ul><li v-for="(item, index) in list" :class="item.check?'active':''" :data-index="index" @click=...
·
一个本来觉得很简单的问题,但也是折腾了好一会,以此记录下来。
结果:根据渲染的结果实现点击更改样式,并获取选中的id
<div id="main">
<ul>
<li v-for="(item, index) in list" :class="item.check?'active':''" :data-index="index" @click="setListCheck(index,item.id)">
<span>{{ item.label }}</span>
</li>
</ul>
<button @click="btn">查询</button>
</div>
动态给数组添加状态值,点击改变选中状态,并获取id值
这里需要注意的是,千万不要直接更改data数据,而是使用vue.set,我就是这里卡了好久。
<script>
var vm=new Vue({
el: '#main',
data: {
list: [
{id:1, label: '苹果'},
{id:2, label: '香蕉'},
{id:3, label: '橘子'}
],
tableData:""
},
methods: {
setListCheck: function(idx) {
var check = this.list[idx].check;
this.list[idx].check = !check;
},
btn:function () {
let arr=[]
for(var i=0;i<this.list.length;i++){
if(this.list[i].check){
arr.push(this.list[i].id);
console.log(this.list[i].id)
}
}
this.arr=arr;
console.log(this.arr)
}
},
mounted(){
this.list.forEach((item,index)=>{
Vue.set(item,'check',false)
})
}
});
</script>
贴一下完整代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.active{
background: #FF0000;
}
</style>
<script src="vue.js"></script>
</head>
<body>
<div id="main">
<ul>
<li v-for="(item, index) in list" :class="item.check?'active':''" :data-index="index" @click="setListCheck(index,item.id)">
<span>{{ item.label }}</span>
</li>
</ul>
<button @click="btn">查询</button>
</div>
</body>
<script>
var vm=new Vue({
el: '#main',
data: {
list: [
{id:1, label: '苹果'},
{id:2, label: '香蕉'},
{id:3, label: '橘子'}
],
tableData:""
},
methods: {
setListCheck: function(idx) {
var check = this.list[idx].check;
this.list[idx].check = !check;
},
btn:function () {
let arr=[]
for(var i=0;i<this.list.length;i++){
if(this.list[i].check){
arr.push(this.list[i].id);
console.log(this.list[i].id)
}
}
this.arr=arr;
console.log(this.arr)
}
},
mounted(){
this.list.forEach((item,index)=>{
Vue.set(item,'check',false)
})
}
});
</script>
</html>
希望能给大家带来帮助,感谢!
更多推荐
已为社区贡献3条内容
所有评论(0)