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

Javascript 无法从jQuery创建的表中删除行,javascript,jquery,checkbox,Javascript,Jquery,Checkbox,我正在基于servlet的结果创建一个表,其中包含一个复选框,当checkbox的checked属性为true时,表底部将有一个按钮,该按钮调用一个remove函数,该函数从表中删除特定的行,当使用服务器标记在jsp内部创建表时,该函数起作用,但当它是从jQuery.getJSON方法创建时,它就不起作用了。代码是 var contents=""; $.getJSON("trnReceipt?caseNo=21&insid="+cdid.text(),function(datalist)

我正在基于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);
})
var contents=”“;
$.getJSON(“trnReceipt?caseNo=21&insin=“+cdid.text(),函数(数据列表){
$.each(数据列表、函数(索引、数据){
contents+=''+data.Instrumentid+'';
索引++;
})
$('tblDetails')。追加(内容);
})
删除该行的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);
    }
}
函数deleteRow(tableID){
试一试{
var table=document.getElementById(tableID);
var rowCount=table.rows.length;

对于(var i=0;i,可以使用jQuery删除如下行:

$('#' + tableId + ' tr:has(td :checkbox:checked)').remove();
这将删除包含复选框的所有行


您的问题可能是查找的单元格不正确。

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


只要你已经使用jQuery,考虑使用jQuery为实际的删除。它会更短并且实际上不容易出错。

它不喜欢你的函数签名与JavaScript API中的签名相同吗?是的,这是正确的,我希望以后我会更加小心,谢谢方向的人。