我创建了一个 jquery 表,不时需要清除并重新填充,我的清除方法是这样的:
//Clear table content before repopulating values
$('#table tr:gt(0)').remove();
现在我正在尝试使用表排序器对特定列进行排序,但我的问题是当我启用表排序器时:
//Initialize tablesorter
$("table").tablesorter();
表清除方法不再起作用,它只是不断用旧数据添加新数据,从而创建大量重复信息。
请帮忙
要更新表排序器,需要先触发"更新",然后才能更新其缓存
$('table').trigger('update');
您还可以使用内置函数来清除表格
$.tablesorter.clearTableBody( table );
这是此演示中组合的代码
var $table = $('table');
// use built in clear function
$.tablesorter.clearTableBody( $table[0] );
$table
.append('<tr><td>george</td><td>papard</td><td>68</td><td>19.99</td><td>55%</td><td>+3</td></tr>')
.trigger('update');
我认为没有理由它不应该工作。它是否可以在没有表排序器插件的情况下工作?
为什么在table
上调用tablesorter()
,但尝试从#table
中删除行?错字?
尝试记录 $('#table')
、$('#table tr')
和 $('#table tr:gt(0)')
的 jQuery 对象,看看那里是否一切正确。
我能让它工作的唯一方法是重新生成整个表(删除它,然后再次创建)。
$(".resultTablePlaceholder").html('').html('<table id="resultTable">...</table>');
$("#resultTable").tablesorter();
原因:
这是因为当我们在表中添加任何数据时,它会触发 buildCache() 方法并将表数据保存在缓存变量中,但是当您从表中删除数据时,它不会对缓存变量进行任何更改。
当您对数据进行排序时,它将清除表并将缓存的数据附加到表中,以便也存在已删除的数据。
溶液:
您可以在 TableSorter 中修改 OnSelectstart() 函数或鼠标按下事件.js
//here tb_35 = id of table
cache = buildCache($('#tb_35')[0]);