所以我在使用jquery删除表中的特定tr时遇到问题。
所以这就是场景:
我有一个表格,其中的行可点击。当我点击其中一个时,我将能够更新与该行相关联的对象数据。但是,在更新对象之后,我想反映特定tr的td的变化。
我的解决方案是,删除旧的tr并替换为新的tr。但是,它没有删除旧的tr而只是插入新的tr。所以这是我的代码:
function update_table_after_updating(selected_violator){
violators_table.find('tr').each(function (i, el) {
var tr = ($(this));
var td_text = $(this).find('td:first').text();
if(td_text == selected_violator.violator_id){
console.log(tr);
//I cant remove this row
tr.remove();
return false;
}
});
update_table(selected_violator);
}
update_table()函数
function update_table(violator){
var img_str1 = '<img class=\"obj-pic\" src=\"' + Main.Vars.base_path + violator.front_temp_file_path + '\">';
var img_str2 = '<img style=\"margin-left: 10px;\" class=\"obj-pic\" src=\"' + Main.Vars.base_path + violator.rear_temp_file_path + '\">';
var img_str3 = '<img style=\"margin-left: 10px;\" class=\"obj-pic\" src=\"' + Main.Vars.base_path + violator.right_temp_file_path + '\">';
var img_str4 = '<img style=\"margin-left: 10px;\" class=\"obj-pic\" src=\"' + Main.Vars.base_path + violator.left_temp_file_path + '\">';
violators_table.dataTable().fnAddData([
violator.violator_id,
violator.get_full_name(),
'Under Construction',
img_str1 + img_str2 + img_str3 + img_str4,
]);
$('#violators_tbl tbody tr').on('click', function(){
var td = $(this).find('td:first').text();
//returns violator object
selected_violator = get_violator(td);
show_modal('view_violator');
});
}
非常感谢!非常感谢您的回复。
PS:我正在使用jquery DataTables。
答案 0 :(得分:1)
嗯这有点令人失望,我搜索了Jquery Docs然后我找到了这个:
.empty() - &gt;此方法不仅删除了孩子(和其他后代) 元素,以及匹配元素集中的任何文本。这个 是因为,根据DOM规范,任何文本字符串 元素内的元素被认为是该元素的子节点。考虑 以下HTML:
与remove()不同。 empty()还会删除所选元素的子节点。
而且,瞧! tr已被删除。