плагин jquery tablesorter не работает для меня (динамические таблицы) - PullRequest
3 голосов
/ 21 июня 2011

У меня есть таблица, которая генерируется динамически. Когда есть данные в таблице, все в порядке. Тем не менее, когда он в следующий раз сталкивается с таблицей, в которой нет данных, я пытаюсь загрузить данные, я получаю следующую ошибку:

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 ]

10 голосов
/ 21 июня 2011

Возможно, вам нужно прибегнуть к таблице ... из этого примера :

$("#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, проверить это в моем блоге .

9 голосов
/ 21 июня 2011

Вероятно, вы не создаете элемент tbody.Это требование для TableSorter.Он не должен содержать никаких данных, например,

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

2 голосов
/ 21 июня 2011

ход:

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

после загрузки таблицы с вашими данными.

EDIT:

Подумав об этом еще раз, вы хотите, чтобы после того, как вы загрузили вашу таблицу, нужно вызвать tableorter (), но прежде чем пытаться ее отсортировать, убедитесь, что в вашем теле есть строки.

как то так:

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