uniapp多选按钮

闲言少叙,直接上效果图,看图才知道是不是自己想要的效果

 

 HTML代码

复制代码
<view class="page index">
        <!-- 多选,不改变选择中后的值 -->
        <view class="list-box">
            <view v-for="(item,index) in list" :key="index" @click="choice(index)" :class="[item.selected?'selde':'noselde']">
                {{item.selected?item.title:item.title}}
            </view>
        </view>

        <!-- 多选,改变选择中后的值 -->
        <!-- <view class="list-box">
            <view v-for="(item,index) in list" :key="index" @click="choice(index)" :class="[item.selected?'selde':'noselde']">
                {{item.selected?"已选择":"选择"}}
            </view>
        </view> -->
    </view>
复制代码

 

js代码

 

复制代码
<script>
    export default {
        data() {
            return {
                list: [{
                        selected: false,
                        title: '张三'
                    },
                    {
                        selected: false,
                        title: '李四'
                    },
                    {
                        selected: false,
                        title: '张三'
                    },
                    {
                        selected: false,
                        title: '张三'
                    },
                    {
                        selected: false,
                        title: '张三'
                    },
                ],
                selectId: [],
            };
        },
        methods: {
            //选择按钮
            choice(index) {
                if (this.list[index].selected == true) {
                    this.list[index].selected = false;
                    //取消选中时删除数组中的值
                    for (var i = 0; i < this.selectId.length; i++) {
                        if (this.selectId[i] === this.list[index].course_id) {
                            this.selectId.splice(i, 1);
                        }
                    }
                    console.log("选中的值", this.selectId)
                } else {
                    this.list[index].selected = true;
                    this.selectId.push(this.list[index].course_id)
                    console.log("选中的值", this.selectId)
                }
            }
        }
    };
</script>
复制代码

 

 

scss代码

 

复制代码
<style lang="scss">
    .list-box {
        display: flex;
        flex-wrap: wrap;
        padding: 16upx;
        border-radius: 10upx;

        view {
            width: 30%;
            height: 60upx;
            line-height: 60upx;
            text-align: center;
            margin-top: 30upx;

            &:not(:nth-child(3n)) {
                margin-right: calc(10% / 2);
            }
        }
    }

    /* 已选择 */
    .selde {
        border: 1px solid red;
        background: red;
        color: #FFFFFF;
        border-radius: 20upx;
        font-size: 20upx;
        padding: 0 10upx;
    }

    /* 未选择 */
    .noselde {
        border: 1px solid #959595;
        background: #FFFFFF;
        color: #959595;
        border-radius: 20upx;
        font-size: 20upx;
        padding: 0 10upx;
    }
</style>
复制代码

 

posted @   琼菇凉  阅读(3179)  评论(1编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示