【发布时间】:2008-10-29 15:45:36
【问题描述】:
我在页面上使用 jQuery tableSorter 插件。
不幸的是,正在排序的表是动态修改的,当我添加元素后排序时,该元素消失了,将表恢复到创建 tableSorter 时的状态。
有什么方法可以强制 tableSorter 重新扫描页面,以便正确排序这些新元素?
【问题讨论】:
标签: jquery tablesorter
我在页面上使用 jQuery tableSorter 插件。
不幸的是,正在排序的表是动态修改的,当我添加元素后排序时,该元素消失了,将表恢复到创建 tableSorter 时的状态。
有什么方法可以强制 tableSorter 重新扫描页面,以便正确排序这些新元素?
【问题讨论】:
标签: jquery tablesorter
我相信您可以使用以下方式触发更新:
$(table).trigger("update")
【讨论】:
看来你是对的。
$(table).trigger("更新"); $(table).trigger("appendCache");成功了。
请注意,tablesorter API 在某些时候发生了变化,因此这些事情以及事件绑定都发生了变化。我最大的困扰是试图弄清楚为什么有些东西有效而另一些无效,这是由于插件版本错误,尽管没有明显的区别。
【讨论】:
$("#ts").tablesorter().trigger("update"); 和appendCache 相同。或:$table = $("#ts").tablesorter(); $table.trigger("update"); $table.trigger("appendCache");
$(table).trigger("update"); 抛出错误
Uncaught TypeError: Cannot read property 'rows' of undefined
所以,有一个 jquery 函数 .ajaxStop(),其中调用了 tablesorter()。不要在.ready()中调用tablesorter
jQuery(document).ajaxStop(function(){
jQuery("#table_name").tablesorter();
})
谁做的工作
【讨论】:
对于像我这样面临排序动态生成表问题的新手,这里是解决方案。 前面给出的答案是正确的,但是你把这个命令放在哪里呢?
$('#tableId').tablesorter().trigger('update');
您需要在将数据附加到表格后立即放置它。 前在我的情况下
var tableData = "<thead><tr><th>Name</th><th>Age</th></thead><tbody><tr><td>Izaki</td><td>24</td><tr><tr><td>Serizawa</td><td>25</td></tr>";
$('#tableId').html('tableData');
$('#tableId').tablesorter().trigger('update');
【讨论】: