Vue中实现span标签的多选

3 篇文章 0 订阅
<!--
 * @Author: error: git config user.name && git config user.email & please set dead value or install git
 * @Date: 2022-08-04 10:00:00
 * @LastEditors: chenzhijie
 * @LastEditTime: 2022-08-04 11:06:53
 * @FilePath: \demo\test20220804.html
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<!DOCTYPE html>
<html>

<head>
    <title>Vue中实现span标签的多选</title>
    <script src="https://unpkg.com/vue@2.7.8/dist/vue.js"></script>
</head>

<body>
    <div id="app">
        <div class="listBox">
            <div class="label" @click.stop>
                <span v-for="(item, index ) in labelList" :class="{ checked: arr.includes(index) }" :key="index"
                    @click="checkedBox(item, index)">{{ item }}</span>
            </div>
        </div>
    </div>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {
                labelList: ["标签1", "标签2", "标签3", "标签4", "标签5"],
                arr: [],
                list: [],
                checked: []
            },
            methods: {
                // 点击多选标签
                checkedBox(c, i) {
                    if (this.arr.includes(i)) {
                        //includes()方法判断是否包含某一元素,返回true或false表示是否包含元素,对NaN一样有效
                        //filter()方法用于把Array的某些元素过滤掉,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素:生成新的数组
                        this.arr = this.arr.filter(function (ele) {
                            return ele != i;
                        });
                        this.list = this.list.filter(function (ele) {
                            return ele != c;
                        });
                        this.checked = this.list
                        console.log(this.checked);
                    } else {
                        this.arr.push(i);
                        this.list.push(c);
                        this.checked = this.list
                        console.log(this.checked);
                    }
                },
            },
        });
    </script>
    <style>
        .label {
            margin-top: 15px;
            background-color: #fff;
        }

        .listBox .label span {
            display: inline-block;
            margin: 5px;
            color: #8c8c8c;
            background-color: rgba(210, 222, 242);
            height: 24px;
            padding: 5px;
            border-radius: 2px;
            text-align: center;
            line-height: 24px;
        }

        .listBox .label .checked {
            color: #1890ff;
            background-color: rgba(217, 236, 255);
        }
    </style>
</body>

</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 ant-design-vue ,下拉框多选的自定义选项可以通过 `template` 和 `render` 方法来实现。 使用 `template` 的方式,可以在 `<a-select-option>` 标签内编写自定义的选项内容。例如: ```html <a-select v-model="selectedOptions" mode="multiple"> <a-select-option v-for="option in options" :key="option.value"> <span>{{ option.label }}</span> <a-checkbox v-model="option.checked"></a-checkbox> </a-select-option> </a-select> ``` 在上面的代码,`options` 是一个数组,用于存储所有的选项。每个选项包含 `label` 和 `value` 属性,以及一个 `checked` 属性用于记录是否选。通过循环遍历 `options` 数组,使用 `<a-select-option>` 标签来创建每个选项,并在其放置自定义的内容。 使用 `render` 方法的方式更加灵活,可以直接通过 JavaScript 代码来生成自定义选项。例如: ```html <a-select v-model="selectedOptions" mode="multiple"> <template v-for="option in options"> <a-select-option :value="option.value" :key="option.value"> {{ option.label }} <a-checkbox v-model="option.checked"></a-checkbox> </a-select-option> </template> </a-select> ``` 在上面的代码,通过 `<template>` 标签来生成多个 `<a-select-option>` 标签,然后在其使用 JavaScript 代码来设置 `value` 和 `key` 属性,并添加自定义内容。 需要注意的是,无论使用 `template` 还是 `render` 方法,都需要使用 `v-model` 来绑定选的选项,以及在选项设置 `value` 属性和 `key` 属性。另外,还可以根据具体需求在选项添加其他自定义的组件或标签。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值