我正在创建一个基于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);
}
}
我在哪里弄错了?
答案 0 :(得分:2)
您可以使用jQuery删除这样的行:
$('#' + tableId + ' tr:has(td :checkbox:checked)').remove();
这将删除包含已选中复选框的所有行。
你的问题可能是你正在查看错误的单元格。
答案 1 :(得分:0)
td标记中的第一个节点是隐藏字段,而不是复选框。因此,在来自getJson方法的行中,chkbox变量实际上不是您的复选框,因此删除该行的条件将始终为false。
只要您已经在使用jQuery,请考虑使用jQuery进行实际删除。它会更短,实际上不容易出错。