Ich habe eine sehr einfache HTML-Tabelle mit 4 Spalten:
Facility Name, Phone #, City, Specialty
Ich möchte, dass der Benutzer nur nach Name der Einrichtung und Stadt sortieren kann .
Wie kann ich dies mit jQuery codieren?
jquery
sorting
html-table
Tony Noriega
quelle
quelle
Antworten:
Wenn Sie alle Schnickschnack vermeiden möchten, kann ich dieses einfache
sortElements
Plugin vorschlagen . Verwendung:Und eine Demo. (Klicken Sie zum Sortieren auf die Spaltenüberschriften "Stadt" und "Einrichtung".)
quelle
Error: illegal character
das HTML ist nicht genau das gleiche, ich habe auch Thead und Tboy, können Sie mir bitte dabei helfen?$.text([a]) == $.text([b])
verwenden,$.text([a]).toUpperCase() == $.text([b]).toUpperCase()
wird es behoben.Ich bin darauf gestoßen und dachte, ich würde meine 2 Cent einwerfen. Klicken Sie auf die Spaltenüberschriften, um aufsteigend und erneut absteigend zu sortieren.
** Update: 2018
quelle
td
s haben, z. B.<a href="#">Test</a>
die Sortierung die<a...
. Um nur nach Text zu sortieren, müssen Siehtml()
in der letzten Zeile zu änderntext()
.comparer(..)
vorliegen , ist es unpraktisch, einen generischen Datumsdetektor / Parser zu schreiben (Sie können ihn neu schreiben, wenn Sie genau wissen, welches Format Sie unterstützen möchten). In der Zwischenzeit , wenn Sie verwendenyyyy-MM-dd
, „string
“ Sortierung werden die Daten für Sie bestellen. zB jsbin.com/pugedip/1Das mit Abstand einfachste, das ich verwendet habe, ist: http://datatables.net/
Erstaunlich einfach ... Stellen Sie einfach sicher, dass Sie Ihre Tabelle mit formatieren
<thead>
und<tbody>
sie nicht funktioniert , wenn Sie den DOM-Ersetzungsweg gehen (IE, Erstellen einer Tabelle und Neuformatieren von DataTables) . Das ist ungefähr das einzige Problem.Es gibt auch Unterstützung für AJAX usw. Wie bei allen wirklich guten Codeteilen ist es auch SEHR einfach, alles auszuschalten. Sie wären jedoch überrascht, was Sie verwenden könnten. Ich begann mit einer "nackten" Datentabelle, die nur ein Feld sortierte, und stellte dann fest, dass einige der Funktionen für meine Arbeit wirklich relevant waren. Kunden lieben die neuen Funktionen.
Bonuspunkte für DataTables für die vollständige Unterstützung von ThemeRoller ....
Ich hatte auch gutes Glück mit Tablesorter, aber es ist bei weitem nicht so einfach, nicht ganz so gut dokumentiert und hat nur gute Funktionen.
quelle
Wir haben gerade angefangen, dieses Slick-Tool zu verwenden: https://plugins.jquery.com/tablesorter/
Es gibt ein Video zu seiner Verwendung unter: http://www.highoncoding.com/Articles/695_Sorting_GridView_Using_JQuery_TableSorter_Plug_in.aspx
Mit einem einfachen Tisch
quelle
Meine Antwort wäre "Vorsicht". Viele Add-Ons zum Sortieren von jQuery-Tabellen sortieren nur das, was Sie an den Browser übergeben. In vielen Fällen müssen Sie berücksichtigen, dass Tabellen dynamische Datensätze sind und möglicherweise zig Millionen Datenzeilen enthalten können.
Sie erwähnen, dass Sie nur 4 Spalten haben, aber viel wichtiger ist, dass Sie nicht erwähnen, über wie viele Zeilen wir hier sprechen.
Wenn Sie 5000 Zeilen aus der Datenbank an den Browser übergeben und wissen, dass die tatsächliche Datenbanktabelle 100.000 Zeilen enthält, lautet meine Frage: Was bringt es, die Tabelle sortierbar zu machen? Um eine ordnungsgemäße Sortierung durchzuführen, müssen Sie die Abfrage an die Datenbank zurücksenden und die Datenbank (ein Tool zum Sortieren von Daten) die Sortierung für Sie durchführen lassen.
Als direkte Antwort auf Ihre Frage ist Ingrid das beste Sortier-Add-On, auf das ich gestoßen bin. Es gibt viele Gründe, warum ich dieses Add-On nicht mag ("unnötige Schnickschnack ...", wie Sie es nennen), aber eine der besten Eigenschaften in Bezug auf die Art ist, dass es Ajax verwendet und nicht. Es wird nicht davon ausgegangen, dass Sie bereits alle Daten übergeben haben, bevor die Sortierung durchgeführt wird.
Ich erkenne, dass diese Antwort für Ihre Anforderungen wahrscheinlich übertrieben (und über 2 Jahre zu spät) ist, aber ich ärgere mich, wenn Entwickler in meinem Bereich diesen Punkt übersehen. Ich hoffe also, dass jemand anderes es aufgreift.
Ich fühle mich jetzt besser.
quelle
Ich liebe diese akzeptierte Antwort, aber selten erhalten Sie Anforderungen zum Sortieren von HTML und müssen keine Symbole hinzufügen, die die Sortierrichtung angeben. Ich habe das Verwendungsbeispiel der Antwort akzeptiert und dies schnell behoben, indem ich einfach Bootstrap zu meinem Projekt hinzugefügt und den folgenden Code hinzugefügt habe:
<div></div>
in jedem,
<th>
so dass Sie einen Platz haben, um das Symbol zu setzen.setIcon(this, inverse);
aus der Verwendung der akzeptierten Antwort unter der Zeile:
th.click(function () {
und durch Hinzufügen der setIcon-Methode:
Hier ist eine Demo . - Sie müssen entweder die Demo in Firefox oder IE ausführen oder die MIME-Typprüfung von Chrome deaktivieren, damit die Demo funktioniert. Dies hängt vom sortElements-Plugin ab, das durch die akzeptierte Antwort als externe Ressource verknüpft ist. Nur ein Kopf hoch!
quelle
Dies ist eine gute Möglichkeit, eine Tabelle zu sortieren:
Die Geige finden Sie hier:
https://jsfiddle.net/e3s84Luw/
Die Erklärung finden Sie hier: https://www.learningjquery.com/2017/03/how-to-sort-html-table-using-jquery-code
quelle
Hier ist ein Diagramm, das bei der Entscheidung hilfreich sein kann: http://blog.sematext.com/2011/09/19/top-javascript-dynamic-table-libraries/
quelle
Die Antwort von @Nick Grealy ist großartig, berücksichtigt jedoch nicht mögliche
rowspan
Attribute der Tabellenkopfzellen (und wahrscheinlich tun es auch die anderen Antworten nicht). Hier ist eine Verbesserung der Antwort von @Nick Grealy, die das behebt. Basierend auch auf dieser Antwort (danke @Andrew Orlov).Ich habe die
$.isNumeric
Funktion auch durch eine benutzerdefinierte ersetzt (danke @zad), damit sie mit älteren jQuery-Versionen funktioniert.Um es zu aktivieren, fügen Sie
class="sortable"
es dem<table>
Tag hinzu.quelle
Sie können ein jQuery-Plugin ( Breedjs ) verwenden, das Sortieren, Filtern und Paginieren bietet:
HTML:
JS:
Arbeitsbeispiel zur Geige
quelle
Dieser legt den / die Browser nicht auf, einfach weiter konfigurierbar:
quelle
Auf die Antwort von James werde ich nur die Sortierfunktion ändern, um sie universeller zu machen. Auf diese Weise werden Text alphabetisch und Zahlen wie Zahlen sortiert.
quelle
Ein weiterer Ansatz zum Sortieren von HTML-Tabellen. (basierend auf W3.JS HTML Sort )
quelle
Am Ende habe ich Nicks Antwort (die beliebteste, aber nicht akzeptierte) https://stackoverflow.com/a/19947532/5271220 verwendet
und kombinierte es mit https://stackoverflow.com/a/16819442/5271220 , wollte dem Projekt jedoch keine Symbole oder Schriftarten hinzufügen. Die CSS-Stile für Sortierspalte aufsteigend / absteigend habe ich Farbe, Auffüllen, abgerundeten Rand gemacht.
Ich habe es auch so modifiziert, dass es eher nach Klassen als nach Klassen sortiert ist, damit wir steuern können, welche sortierbar sind. Dies könnte sich auch später als nützlich erweisen, wenn zwei Tabellen vorhanden sind, obwohl dafür weitere Änderungen erforderlich wären.
Körper:
... weiter unten im Körper
Funktionen:
quelle
Meine Wahl! jquery.sortElements.js und einfache jquery
Sehr einfach, sehr einfach, danke nandhp ...
Dei uma melhorada do código
Ein Kabeljau besser! Funktion für alle Tabellen in allen Th in allen Zeiten ... Schau es dir an!
DEMO
quelle
.live()
.