使用jquery表中的复选框从数组中删除JavaScript对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用jquery表中的复选框从数组中删除JavaScript对象相关的知识,希望对你有一定的参考价值。

我正在处理项目我遇到了一个问题:我创建了jQuery表并且在复选框上检查了特定行的所有值并将其推入数组现在我想从取消选中该行时从数组中删除每一行记录。我已经编写了一些删除脚本,但它无法正常工作。并告诉我,有任何简单的方法来获取特定行的数据与jQuery表中的复选框。

脚本

$.ajax({
    type: 'POST',
    url: "/Student/GetFee",
    contentType: "application/json; charset=utf-8",
    dataType: 'json',
    data: JSON.stringify({ Class_Id: Class_Id }),
    success: function (list) {
        $("#view").html('');
        $.each(list, function (key, value) {
            var html = $(
                '<tr>' +
                    '<td>' + value.Id + '</td>' +
                    '<td>' + value.FeeHeadName + '</td>' +
                    '<td>' + value.SchoolName + '</td>' +
                    '<td>' + value.ClassName + '</td>' +
                    '<td>' + value.Amount + '</td>' +
                    '<td>' + "<input type='text'  name='Paid' class='paid' onkeypress='paid(this)'/>" + '</td>' +
                    '<td>' + "<input type='text' class='Discount' name='Discount' onkeypress='discount(this)'/>" + '</td>' +
                    '<td>' + "<input type='text' class='NetAmount' name='NetAmount' />" + '</td>' +
                    '<td>' + "<input type='checkbox' class='ckb'/>" + '</td>' +
                '</tr>');
            $("#view").append(html);
            html = '';
        });

        //pushing objects in array
        $('#view input[type=checkbox]').click(function () {                                             
            var row = $(this).closest('tr');
            var id = row.find('td:eq(0)').text();
            var fname = row.find('td:eq(1)').text();
            var sname = row.find('td:eq(2)').text();
            var cname = row.find('td:eq(3)').text();
            var amount = row.find('td:eq(4)').text();
            var paid = row.find($('.paid')).val();
            var discount = row.find($('.Discount')).val();
            var netAmount = row.find($('.NetAmount')).val();
                            
            if ($(this).is(":checked")) {
                info.push({                                 
                    Fee_Id: id,
                    FeeHeadName: fname,
                    sname: sname,
                    cname: cname,
                    Amount: amount,
                    Paid: paid,
                    Discount: discount,
                    NetAmount: netAmount
                });                            
                console.log(info);
            }
            else {
                if ($(this).not(":checked")) {
                    var x = info.indexOf($(this).val());
                    info.splice(x, 1);
                    console.log(info);
                }
            }
        });
    }
});

Take a look of View

答案

你必须在数组中循环并检查哪一个具有未检查行的id

if ($(this).not(":checked")) {
    var indexToRemove = -1;

    for (var i = 0; i < info.length; i++) {
        if (info[i].Fee_id == id) {
            indexToRemove = i;
            break;
        }
    }
    if (indexToRemove != -1) {
        info.splice(indexToRemove, 1);
    }
}

以上是关于使用jquery表中的复选框从数组中删除JavaScript对象的主要内容,如果未能解决你的问题,请参考以下文章

当使用 Javascript/JQuery 选中该行中的复选框时,从 HTML 表中的特定列获取数据

选中复选框时在表中添加 Textfieds 使用 Jquery

如何用复选框jQuery替换数组中的值

Javascript/jQuery - 将项目推送到数组并从数组中删除

使用复选框从数据库表中删除一行

jQuery - 无法从复选框中删除选中的属性