jquery tablesorter插件不适合我(动态表)

时间:2011-06-20 23:30:22

标签: jquery tablesorter

我有一个动态生成的表。当表中的数据排序很好。但是,当它在下次尝试加载数据时遇到其中没有数据的表时,我收到以下错误:

table.tBodies [0]未定义 [打破此错误] totalCells =(tabl ... Bodies [0] .rows [0] .cells.length)|| 0,

我正在做的是我在屏幕的左侧列出了一堆或多个表格。当我点击一个我创建一个html表时,它包含列,然后包含该表中的数据。只有当我单击一个只返回表的列名的表时才会出现此问题(数据库中的表中没有数据)。

在我的.ajax调用中加载表:

        $("#tableData").tablesorter(); 
        ($("#tableContents").html(result));
        $("#tableData").trigger("update"); 
        $("#tableData").tablesorter();

我可能会收到此错误的任何想法?

3 个答案:

答案 0 :(得分:9)

你可能没有创建tbody元素。这是tablesorter的要求。它不需要保存任何数据,例如

<table><thead>...</thead><tbody></tbody></table>

答案 1 :(得分:9)

你可能需要从this example

求助你的桌子
$("#tableContents").append(html); 
$("#tableData")
  .trigger("update")
  .trigger("sorton",[ [[2,1],[0,0]] ]);

如果这不起作用,请尝试“appendCache”方法

$("#tableContents").append(html); 
$("#tableData")
  .trigger("update")
  .trigger("appendCache")
  .trigger("sorton",[ [[2,1],[0,0]] ]);

我还花了一些时间尝试在TableSorter中找到所有未记录的方法和选项,请在my blog中查看。

答案 2 :(得分:2)

举:

$("#tableData").tablesorter(); 

在您使用数据加载表格之后。

编辑:

在考虑了这个之后,你确实希望在加载表之后调用tablesorter(),但在尝试对它进行排序之前,请检查以确保行中有行。

类似的东西:

if($("#tableData").find('tbody:first tr').length > 0){
     $("#tableData").tablesorter(); 
}