Хотя в приведенном выше ответе об этом не упоминается, я смог воспроизвести ошибку, сначала создав экземпляр tablesorter(), а затем инициировав запрос сортировки.
Этот порядок событий будет необходим при добавлении или замене существующих данных таблицы новыми данными через AJAX или иным образом:
// populate our table body with rows
$("#myTable tbody").html(json.tbody);
// let the sorting plugin know that we made a update
$("#myTable").trigger("update");
// set sorting column and direction, this will sort on the first and third column
var sorting = [[2,1],[0,0]];
// sort
$("#myTable").trigger("sorton",[sorting]);
Комбинация события «обновление» и «сортон», похоже, вызывает ошибку. К тому времени, когда событие "sorton" обрабатывается, DOM не был назначен table.config.parsers - отсюда и ошибка.
Исправление состоит в том, чтобы обернуть обработку события «sorton» тайм-аутом в 1 миллисекунду.
Замените существующую привязку «sorton» в jquery.tablesorter.js (строка ~803) следующим:
}).bind("sorton", function (e, list) {
var me = this;
setTimeout(function () {
$(this).trigger("sortStart");
config.sortList = list;
// update and store the sortlist
var sortList = config.sortList;
// update header count index
updateHeaderSortCount(me, sortList);
// set css for headers
setHeadersCss(me, $headers, sortList, sortCSS);
// sort the table and append it to the dom
appendToTable(me, multisort(me, sortList, cache));
}, 1);
tablesorter() — действительно удобный плагин. Спасибо Кристиану за выпуск.
person
jrob00
schedule
29.07.2011