遍历生成列表选中改变样式

问题来源:

在实际开发过程中,我们很多时候使用的列表都是v-for遍历渲染的,可能是几条,也可能成百上千条了列表,这样我们就需要做一个点击选中改变所选中的那一条列表的样式(如:背景色,文字颜色等)

解决方法:

依旧使用class或者id选中器,通过一个三目判断是否选中来使用不一样的样式,如下,通过点击事件把当前点击的'i'赋值给index,同时通过函数bgc来判断是否选中返回一个布尔值,再通过三目运算来赋予相应的类名

代码:

HTML

 <div class="list">
        <div class="listOne" v-for="(v,i) in data1" :key="i" @click="clickCkeck(v,i)" :class="bgc(i)?'listOneChecked':'listOne'">{{ v.name }}</div>
    </div>

CSS

.listOne{
    width: 100%;
    height: 40px;
    line-height: 40px;
    cursor: pointer;
}
.listOne:hover{
    width: 100%;
    height: 40px;
    line-height: 40px;
    background-color: #474747;
}
.listOneChecked{
    width: 100%;
    height: 40px;
    line-height: 40px;
    background-color: #6b6b6b;
}

JS

const clickCkeck=(v:any,i:any)=>{
    console.log(v);
    value1.value=v.name
    index.value=i
}
const bgc=(i:any)=>{
    if(i==index.value){
        return true
    }
    else{
        return false
    }
}

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
很抱歉,我是一名语言模型,无法生成完整的代码。但是,我可以为您提供参考。 省市区三级联动的实现,可以利用jQuery插件实现,例如Ztree、jQuery-Area-Selector等插件。这些插件已经提供了省市区数据源和交互效果,只需要按照插件提供的API进行配置和调用即可。 以下是一个使用jQuery-Area-Selector插件实现省市区三级联动的示例代码: HTML部分: ```html <div class="area-selector"> <select class="province"></select> <select class="city"></select> <select class="district"></select> </div> ``` CSS部分: ```css .area-selector select { width: 33.3%; box-sizing: border-box; float: left; } ``` JS部分: ```javascript $(function() { // 初始化省份数据 $.ajax({ url: 'province.json', success: function(data) { var options = '<option value="">请选择省份</option>'; for(var i=0; i<data.length; i++) { options += '<option value="' + data[i].code + '">' + data[i].name + '</option>'; } $('.province').html(options); } }); // 省份改变事件 $('.province').change(function() { var code = $(this).val(); if(code) { // 初始化城市数据 $.ajax({ url: 'city.json?province=' + code, success: function(data) { var options = '<option value="">请选择城市</option>'; for(var i=0; i<data.length; i++) { options += '<option value="' + data[i].code + '">' + data[i].name + '</option>'; } $('.city').html(options); $('.district').html('<option value="">请选择区县</option>'); } }); } else { $('.city').html('<option value="">请选择城市</option>'); $('.district').html('<option value="">请选择区县</option>'); } }); // 城市改变事件 $('.city').change(function() { var code = $(this).val(); if(code) { // 初始化区县数据 $.ajax({ url: 'district.json?city=' + code, success: function(data) { var options = '<option value="">请选择区县</option>'; for(var i=0; i<data.length; i++) { options += '<option value="' + data[i].code + '">' + data[i].name + '</option>'; } $('.district').html(options); } }); } else { $('.district').html('<option value="">请选择区县</option>'); } }); // 初始化插件 $('.area-selector').areaSelector(); }); ``` 其中,省市区数据源需要根据实际情况进行调整,可以使用JSON文件或者后端接口提供数据。另外,CSS部分的样式可以根据需要进行调整,JS部分的代码注释已经标注出来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值