【问题标题】:Unable to remove row from table created by jQuery无法从 jQuery 创建的表中删除行
【发布时间】:2010-01-04 16:49:14
【问题描述】:

我正在根据来自 servlet 的结果创建一个表,其中包含一个 checkbox从表中,当使用服务器标签在 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);
    }
}

我哪里出错了?

【问题讨论】:

  • 它是否不喜欢您的函数签名与 Javascript API 中的签名相同这一事实?

标签: javascript jquery checkbox


【解决方案1】:

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

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

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

您的问题可能是您在错误的单元格中查找。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 是的,这是正确的,我希望我以后会更加小心,谢谢指导。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多