Für kleine Tische, das tue ich es auf diese Weise ...
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;
}
});
});
};
Erläuterung: Die Funktion jeder Zeile geht durch (einer bestimmten Klasse) der Tabelle angegeben ist, Kenntnis von dem HTML-Inhalt nimmt (aus der Zelle der angegebenen Spalte) und durchläuft dann alle Tabellenzeilen, die den Zelleninhalt vergleichen (wiederum aus der angegebenen Spalte). Wenn der Zelleninhalt kleiner oder größer ist (basierend darauf, ob "aufsteigend" auf "wahr" gesetzt ist), wird die Zeile vor derjenigen eingefügt, mit der sie verglichen wurde.
Ein Beispielaufruf wäre ...
sortTable("sample_table", "data_row", 0, true);
... die Zeilen sortieren würde, die die Klasse „DATA_ROW“ haben, in der Tabelle „Beispieltabelle“ genannt, basierend auf Zellen in der erste Spalte (dh Spaltenindex 0) in aufsteigender Reihenfolge.
Für größere Tabellen und zusätzliche Funktionen, verwende ich ...
rechten Seite der Box, finde ich Tables viel einfacher zu bedienen als Tablesorter (zB keine Notwendigkeit zum Referenzieren oder Einfügen zusätzlicher CSS und Grafiken, außer Sie möchten), und die Dokumentation ist hervorragend. Ich mag auch die Standardfunktionalität (z. B. seine Suchfunktion).
meine Lösung arbeitete für Sie? –