Ich habe kürzlich mit dem Tablesorter-Plugin für jQuery experimentiert. Ich habe es erfolgreich einmal in Betrieb genommen und bin sehr beeindruckt. Ich habe jedoch versucht, den Tablesorter auf eine andere Tabelle anzuwenden, nur um einige Schwierigkeiten zu begegnen ...jQuery tablesorter - Verlust der Funktionalität nach AJAX-Aufruf
Grundsätzlich hat die Tabelle, die ein Problem verursacht, eine <ul>
darüber, die als eine Reihe von Registerkarten für die Tabelle fungiert. Wenn Sie also auf eine dieser Registerkarten klicken, wird ein AJAX-Aufruf durchgeführt, und die Tabelle wird mit den Zeilen neu gefüllt, die für die ausgewählte Registerkarte relevant sind. Wenn die Seite anfänglich geladen wird (d. H. Bevor ein Tab angeklickt wurde), funktioniert die Funktionalität von Tablesorter genau wie erwartet.
Wenn jedoch eine Registerkarte angeklickt und die Tabelle neu gefüllt wird, verschwindet die Funktionalität und wird ohne die sortierbare Funktion wiedergegeben. Auch wenn Sie nach dem Klicken auf eine andere Registerkarte zur ursprünglichen Registerkarte zurückkehren, wird die Funktionalität nicht zurückgegeben. Die einzige Möglichkeit besteht darin, die Seite im Browser physisch zu aktualisieren.
Ich habe eine Lösung gesehen, die meinem Problem auf dieser Site ähnlich zu sein scheint, und jemand empfiehlt, das jQuery-Plugin, livequery, zu verwenden. Ich habe dieses aber vergebens versucht :-(
Wenn jemand irgendwelche Vorschläge hat, würde ich am meisten schätzen. Ich kann Codeschnipsel bekanntgeben, wenn es helfen würde (obwohl ich weiß, dass der Instanziierungscode für salesorter in Ordnung ist, wie es arbeitet Tabellen ohne Tabs - es ist also auf jeden Fall nicht, dass)
EDIT: Wie gewünscht, hier sind einige Code-Schnipsel:
die Tabelle <table id="#sortableTable#">..</table>
ist sortiert werden, die Instanziierung Code für tablesorter ich verwende ist:
$(document).ready(function()
{
$("#sortableTable").tablesorter(
{
headers: //disable any headers not worthy of sorting!
{
0: { sorter: false },
5: { sorter: false }
},
sortMultiSortKey: 'ctrlKey',
debug:true,
widgets: ['zebra']
});
});
Und ich versuchte zu rig up livequery wie folgt:
$("#sortableTable").livequery(function(){
$(this).tablesorter();
});
Diese wenn auch nicht geholfen hat ... Ich bin nicht sicher, ob ich die ID der Tabelle mit livequery verwenden sollte, wie es der Klick auf den <ul>
ist Ich sollte darauf reagieren, was natürlich nicht Teil des Tisches ist. Ich habe eine Reihe von Variationen in der Hoffnung versucht, dass einer von ihnen helfen wird, aber ohne Erfolg :-(
i‘ lch schau jetzt mal rein :-) –
versuche die trigger() methode wie von elwyn vorgeschlagen, viel effizienter als die reinitialisierung der gesamten tabelle. – soupasouniq
Danke @soupasouniq Ich werde das versuchen. – simplyharsh