Я только что столкнулся с этой ошибкой, поэтому я решил опубликовать ответ на случай, если у кого-то еще возникнут проблемы с ним позже.
Хотя в приведенном выше ответе об этом нет упоминания, я смог воспроизвести ошибку, сначала создав экземпляр таблицыorter (), а затем вызвав запрос на сортировку.
Этот порядок событий будет необходим при добавлении или замене существующих данных таблицы новыми данными через 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]);
Комбинация события "update" и "sorton", кажется, вызывает ошибку. Ко времени обработки события 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 () действительно удобный плагин. Спасибо Кристиану за то, что выпустили его.