Для небольших таблиц, я делаю это так ...
sortTable = function(tableName, rowClass, columnNumber, ascending) {
var row, cell, cellContent;
var comparisonRow, comparisonCell, comparisonContent;
$("#" + tableName + " tr." + rowClass).each(function(i) {
row = $("#" + tableName + " tr." + rowClass + ":eq(" + i + ")");
cell = $(row).find("td:eq(" + columnNumber + ")");
cellContent = $(cell).html();
$("#" + tableName + " tr." + rowClass).each(function(j) {
comparisonRow = $("#" + tableName + " tr." + rowClass + ":eq(" + j + ")");
comparisonCell = $(comparisonRow).find("td:eq(" + columnNumber + ")");
comparisonContent = $(comparisonCell).html();
if ((ascending && cellContent < comparisonContent) || (!ascending && cellContent > comparisonContent)) {
$(row).insertBefore(comparisonRow);
return false;
}
});
});
};
Объяснение: Функция проходит по каждой строке (из заданного класса) из указанной таблицы, принимает к сведению содержание HTML (из ячейки указанного столбца), а затем просматривает все строки таблицы, сравнивая содержимое ячейки (снова из указанного столбца). Когда содержимое ячейки меньше или больше (в зависимости от того, установлено ли значение «возрастание» равным true), строка вставлена перед той, к которой она была сопоставлена.
Образец вызова будет ...
sortTable("sample_table", "data_row", 0, true);
... что бы отсортировать строки, которые имеют класс «data_row», внутри таблицы с именем «образец таблицы», на основе ячеек в первый столбец (то есть индекс столбца 0) в порядке возрастания.
Для больших таблиц и дополнительных функций, которые я использую ...
правой коробки, я считаю DataTables гораздо проще в использовании, чем TableSorter (например, нет необходимости для ссылок или включения дополнительных CSS и художественных работ, если вы не хотите), и документация отличная. Мне также нравится функциональность по умолчанию (например, функция поиска).
мое решение сработало для вас? –