Javascript 无法从jQuery创建的表中删除行
我正在基于servlet的结果创建一个表,其中包含一个复选框,当checkbox的checked属性为true时,表底部将有一个按钮,该按钮调用一个remove函数,该函数从表中删除特定的行,当使用服务器标记在jsp内部创建表时,该函数起作用,但当它是从jQuery.getJSON方法创建时,它就不起作用了。代码是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)
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中的签名相同吗?是的,这是正确的,我希望以后我会更加小心,谢谢方向的人。