无法从jQuery创建的表中删除行

时间:2010-01-04 16:49:15

标签: javascript jquery checkbox

我正在创建一个基于servlet结果的表,其中包含一个复选框,当checkbox的checked属性为true时,表底部会有一个按钮,它调用remove函数,删除该特定行从表中,当使用服务器标记在jsp中创建表时,此函数正在工作,但是当它从jQuery .getJSON方法创建时,它无法正常工作。代码是。

var contents="";
$.getJSON("trnReceipt?caseNo=21&insid="+cdid.text(),function(datalist) {

    $.each(datalist, function(index, data) {
        contents += '<tr><td><input type="hidden" id="txt_select'+index+'" name="txt_select'+index+'" value='+data.return_status+'></input><input type="checkbox" name="chk_select'+index+'" /></td><td><input type="hidden" name="txtInstrid'+index+'" value="'+data.Instrumentid+'"/>' + data.Instrumentid +  '</td></tr>';
        index++;
    })

    $('#tblDetails').append(contents);
})

删除该行的Javascript代码为:

function deleteRow(tableID) {

    try {
        var table = document.getElementById(tableID);
        var rowCount = table.rows.length;

        for(var i=0; i<rowCount; i++) {
            var row = table.rows[i];
            var chkbox = row.cells[0].childNodes[0];

            if(null != chkbox && true == chkbox.checked) {
                table.deleteRow(i);
                rowCount--;
                i--;
            }
        }
    } catch(e) {
        alert(e);
    }
}

我在哪里弄错了?

2 个答案:

答案 0 :(得分:2)

您可以使用jQuery删除这样的行:

$('#' + tableId + ' tr:has(td :checkbox:checked)').remove();

这将删除包含已选中复选框的所有行。

你的问题可能是你正在查看错误的单元格。

答案 1 :(得分:0)

td标记中的第一个节点是隐藏字段,而不是复选框。因此,在来自getJson方法的行中,chkbox变量实际上不是您的复选框,因此删除该行的条件将始终为false。

只要您已经在使用jQuery,请考虑使用jQuery进行实际删除。它会更短,实际上不容易出错。