列表点击编辑的时候多选删除

46 篇文章 0 订阅
41 篇文章 1 订阅

在做收藏和消息列表点击编辑进行全选删除和单选删除时,遇到了一个这样的问题:当点击编辑了之后,后面加载出来的列表条目不会渲染上去多选框,也添加不上被选中的状态,这样就导致无法判断是否被选中。
请教了一番后,才知道需要把后加载出来的列表先解绑再绑定checked的状态。
全选按钮:

<input id="all" type="checkbox" class="dr_select" data="all">

列表条目的多选按钮:

<input type="checkbox" class="dr_select" value="这里可以写id用来做删除的时候传参">

js:

$(document).ready(function () {
    $('.dr_select').unbind('click').bind('click', '', checkBox);
});
function checkBox (){
    if ($(this).attr("checked")) {
        $(this).removeAttr("checked");
        return;
    }
    $(this).attr("checked", "ture");
}
//最后一个checkbox 全选或者全反选
$('#all').on('click', function() {
    if ($(this).attr("index")) {
        $('.dr_select').removeAttr('checked').removeProp('checked');
        $(this).removeAttr("index");
        return;
    }
    $(this).attr("index", 1);
    $('.dr_select').attr('checked', 'ture').prop('checked', 'ture');
})

ps:因为我的这个有一个加载列表的操作,所以我做了加载完列表的时候判断了一下,首先给编辑按钮edit赋了一个值,比如1,当点击edit的时候,编辑的字肯定就变成完成了把,这时候编辑按钮的1就变成了2。然后在加载完列表的时候判断编辑按钮的值是2的话,就把点击编辑时会改变的东西再执行一遍,也要执行一下一开始我们的解绑操作(下面这句话),这样弄完之后,就好使了。

$('.dr_select').unbind('click').bind('click', '', checkBox);

最后是删除操作的代码。这个地方是传的上面input多选框里给value赋的值,如果是多选的话用逗号隔开传进去。这里我引了layer,不需要的话可以删掉:

//点击删除
$(".collect_delete").on('click', function () {
    // 获取url值
    var url = $(this).attr("url");
    let id = $(".dr_select").val();
    console.log(id)
    // 询问弹窗
    layer.open({
        title: [
            Confirm_delete,
            'background-color:#ffffff !important;color: #000 !important;height: 2.11rem;line-height: 2.11rem;font-size:0.3rem;'
        ],
        type: 1,
        anim: 'up',
        btn: [yes, cancel],
        yes: function () {
            // yes
            let value = $(".dr_select[checked]");
            var arr = [];
            for (var i = 0; i < value.length; i++) {
                arr.push(value[i].getAttribute("value"));
            }
            if (arr) {
                var id = arr.join(',');
            }
            $.ajax({
                type: "POST",
                url: url,
                data: {
                    id: id,
                },
                dataType: "json",
                success: function (data) {
                    if (data.status == 1) {
                        // 操作成功
                        layer.open({
                            content: '删除成功',
                            skin: 'del_success',
                            time: 2
                        });
                        window.location.reload();
                    } else {
                        layer.open({
                            title: ['请正确勾选'],
                            type: 1,
                            anim: 'up',
                        });
                    }
                }
            });
        }, function() {
            layer.closeAll();
        }
    })
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: elementui中的el-select下拉框组件是一个选择器,它可以用来单选或者多选。当我们给el-select组件绑定multiple属性时,它就可以实现多选功能。但是这样绑定multiple属性后,下拉框将不能进行编辑删除。 实际上,多选的下拉框不提供编辑删除功能是因为这样的设计逻辑。多选下拉框最多允许用户选择多个选项,而不支持编辑删除已选中的选项。通过点击下拉框展开选项,用户可以选择自己所需的多个选项,但是不能对已选中的选项进行直接编辑删除。 如果我们需要对已选中的选项进行修改或删除,可以通过其他方式来实现。比如,可以在多选下拉框的旁边添加一个"编辑"或"删除"的按钮,当用户点击这个按钮时,弹出一个对话框或者列表,用户可以在其中编辑删除已选中的选项。 总结来说,elementui中的el-select下拉框组件绑定multiple多选后无法直接编辑删除已选中的选项,但是我们可以通过增加其他操作,比如添加按钮和弹出对话框等,来实现对已选中选项的编辑删除操作。 ### 回答2: 在Element UI中,el-select下拉框绑定了multiple多选后,无法直接编辑删除选项。这是因为多选的特性要求用户通过勾选或取消勾选选项来进行选择和取消选择,而不是直接编辑删除选项。 如果你想删除选择的选项,可以通过以下方法实现: 1. 通过v-model指令将已选择的选项绑定到一个数据属性中。例如,将已选择的选项绑定到一个名为selectedOptions的数组属性中。 2. 在页面上,以列表或其他形式展示已选择的选项,并为每个选项提供删除按钮。 3. 当用户点击删除按钮时,触发对应的方法。在方法中,我们可以通过数组的splice方法,根据选项的索引从selectedOptions数组中删除对应的选项。 下面是一个简单的示例: ```vue <template> <div> <el-select v-model="selectedOptions" multiple> <el-option v-for="option in options" :key="option.value" :label="option.label" :value="option.value"></el-option> </el-select> <ul> <li v-for="(option, index) in selectedOptions" :key="option"> {{ option.label }} <button @click="removeOption(index)">删除</button> </li> </ul> </div> </template> <script> export default { data() { return { options: [ { label: "选项1", value: "option1" }, { label: "选项2", value: "option2" }, { label: "选项3", value: "option3" } ], selectedOptions: [] }; }, methods: { removeOption(index) { this.selectedOptions.splice(index, 1); } } }; </script> ``` 通过以上方法,我们可以实现在el-select的多选模式下删除选择的选项。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值