table 表格的全选和反选

<table class="layui-table">
                        <thead>
                        <tr>
                            <th style="width: 15px;"><input name="user_ids" type="checkbox" class="check-all"></th>
                            <th style="width: 30px;">ID</th>
                            <th>所属项目</th>
                            <th>直播名称</th>
                            <th>直播地址</th>
                            <th>开始时间</th>
                            <th>结束时间</th>
                        </tr>
                        </thead>
                        {if condition="$data"}
                        <tbody>
                        {foreach name="data" item="vo"}
                        <tr>
                            <td><input type="checkbox" name="ids[]" value="{$vo.id}"></td>
                            <td>{$vo.id}</td>
                            <td>{:cache('category')[$vo.project_id]['name']}</td>
                            <td>{$vo.name}</td>
                            <td>{$vo.link}</td>
                            <td>{$vo.start_time|date="Y-m-d H:i:s",###}</td>
                            <td>{$vo.end_time|date="Y-m-d H:i:s",###}</td>
                        </tr>
                        {/foreach}
                        {else/}
                        <tr>
                            <td colspan="15" style="text-align: center;"><i class="fa fa-exclamation-circle"></i>没有数据</td>
                        </tr>
                        {/if}
                        </tbody>
                    </table>

js

/**
 * 通用全选
 */
$('.check-all').on('click', function () {
    $(this).parents('table').find('input[type="checkbox"]').prop('checked', $(this).prop('checked'));
});

/**
 * 通用删除
 */
$('.ajax-delete').on('click', function () {
    var _href = $(this).attr('href');
    layer.open({
        shade: false,
        content: '确定删除?',
        btn: ['确定', '取消'],
        yes: function (index) {
            $.ajax({
                url: _href,
                type: "get",
                success: function (info) {
                    if (info.code === 1) {
                        setTimeout(function () {
                            location.href = info.url;
                        }, 1000);
                    }
                    layer.msg(info.msg);
                }
            });
            layer.close(index);
        }
    });

    return false;
});
对于 Vue3 嵌套表格中的全选功能,你可以按照以下步骤实现: 1. 在父表格组件中定义一个中项的数组,例如:`selectedRows: []`。 2. 在父表格中的每一行中添加一个复框,并绑定一个 `v-model` 指令到该行对应数据的中状态,例如:`<input type="checkbox" v-model="rowData.selected">`。 3. 在表头中添加一个全选框,并绑定一个 `v-model` 指令到一个 Boolean 类型的变量,例如:`<input type="checkbox" v-model="allSelected">`。 4. 在全选框的 `change` 事件中,将所有数据的中状态设为全选框的中状态,并通过 `$emit` 方法向子组件发送消息,例如: ``` selectAll() { this.selectedRows = this.tableData.map(row => { row.selected = this.allSelected; return row; }); this.$emit('select-all', this.allSelected); } ``` 5. 在中项数组的 `watch` 中,计算已中的项数,并更新全选框的中状态,例如: ``` watch: { selectedRows() { const selectedCount = this.selectedRows.filter(row => row.selected).length; this.allSelected = selectedCount === this.tableData.length; } } ``` 6. 在子表格组件中定义一个中项的数组,并通过 `props` 接收父组件传递的中状态中项数组,例如: ``` props: { allSelected: Boolean, selectedRows: Array }, data() { return { innerSelectedRows: [] }; } ``` 7. 在子表格中的每一行中添加一个复框,并绑定一个 `v-model` 指令到该行对应数据的中状态,例如:`<input type="checkbox" v-model="rowData.selected">`。 8. 在表头中添加一个全选框,并绑定一个 `v-model` 指令到一个 Boolean 类型的变量,例如:`<input type="checkbox" v-model="allSelected">`。 9. 在父组件向子组件发送消息的事件中,将子组件的中项数组设为父组件的中项数组,并根据父组件的全选状态更新子组件的全选状态,例如: ``` onSelectAll(allSelected) { this.innerSelectedRows = this.tableData.map(row => { row.selected = allSelected; return row; }); this.allSelected = allSelected; } ``` 10. 在子组件中项数组的 `watch` 中,计算已中的项数,并更新父组件的中项数组全选状态,例如: ``` watch: { innerSelectedRows() { const selectedCount = this.innerSelectedRows.filter(row => row.selected).length; this.selectedRows.splice(this.$attrs.index, 1, ...this.innerSelectedRows); this.$emit('select-all', selectedCount === this.innerSelectedRows.length); } } ``` 以上就是实现 Vue3 嵌套表格全选功能的基本步骤。需要注意的是,在子组件中,需要通过 `$attrs` 获取到父组件传递的索引值,以便更新父组件的中项数组。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值