Mit jQuery Tablesorter auf dynamisch modifiziert Tisch
-
05-07-2019 - |
Frage
Ich bin die jQuery-Plugin Tablesorter auf einer Seite verwendet wird.
Unfortunatley, die Tabelle, die dynamisch modifiziert werden sortiert ist, und wenn ich sortie Hinzufügen eines Elements, verschwindet das Element, zu dem Zustand, den Tisch wieder herstellt, dass es sich in, wenn der Tablesorter erstellt wurde.
Gibt es eine Möglichkeit, dass ich Tablesorter zwingen kann, die Seite neu zu scannen, damit diese neuen Elemente richtig sortiert werden?
Lösung
Ich glaube, dass Sie ein Update auslösen können mit so etwas wie:
$(table).trigger("update")
Andere Tipps
Es scheint, Sie richtig sind.
$(table).trigger("update"); $(table).trigger("appendCache");
funktioniert der Trick.
Als Hinweis, der tablesorter API irgendwann geändert, so wurden diese Dinge geändert, sowie die Ereignisbindung. Mein größter hangup wurde versucht, herauszufinden, warum manche Dinge funktionierten und andere nicht, und es war aufgrund einer falsche Version des Plugins zu haben, obwohl es kein offensichtlicher Unterschied zu sein.
Die $(table).trigger("update");
wirft Fehler
Uncaught TypeError: Cannot read property 'rows' of undefined
So gibt es eine jQuery-Funktion .ajaxStop()
wo tablesorter()
genannt wird. Rufen Sie nicht tablesorter in .ready()
jQuery(document).ajaxStop(function(){
jQuery("#table_name").tablesorter();
})
, welche die Arbeit geleistet hat
Für die Newbies wie mich, die Frage, die sich mit dynamisch generierten Tabelle sortiert wird, ist hier die Lösung. Die Antwort ist zuvor gegeben richtig, aber wo platziere Sie diesen Befehl?
$('#tableId').tablesorter().trigger('update');
Sie müssen es platzieren, sobald Sie die Daten an die Tabelle angehängt haben. Ex in meinem Fall
var tableData = "<thead><tr><th>Name</th><th>Age</th></thead><tbody><tr><td>Izaki</td><td>24</td><tr><tr><td>Serizawa</td><td>25</td></tr>";
$('#tableId').html('tableData');
$('#tableId').tablesorter().trigger('update');