Niedawno eksperymentowałem z wtyczką tablesorter dla jQuery. Udało mi się go uruchomić i uruchomić w jednej instancji i jestem pod wrażeniem. Jednak próbowałem zastosować tablesorter do innej tabela, tylko napotykać pewne trudności ...jQuery tablesorter - utrata funkcjonalności po wywołaniu AJAX
Zasadniczo tabela powodująca problem ma powyżej <ul>
, który działa jako zestaw zakładek dla tabeli. więc jeśli klikniesz jedną z tych kart, zostanie wykonane wywołanie AJAX, a tabela zostanie ponownie wypełniona wierszami odpowiadającymi klikniętej zakładce. Po początkowym załadowaniu strony (tj. Przed kliknięciem na kartę) funkcja tablesorter działa dokładnie zgodnie z oczekiwaniami.
Ale po kliknięciu karty i ponownym zasiedleniu tabeli, funkcja znika, renderując ją bez funkcji sortowalnej. Nawet jeśli wrócisz do oryginalnej zakładki, po kliknięciu innego funkcja nie powróci - jedynym sposobem na to jest fizyczne odświeżenie strony w przeglądarce.
Widziałem rozwiązanie, które wydaje się podobne do mojego problemu na tej stronie, a ktoś zaleca użycie wtyczki jQuery, livequery. Próbowałem tego, ale bezskutecznie :-(
Jeśli ktoś ma jakieś sugestie, byłbym najbardziej wdzięczny .Po umieszczeniu fragmentów kodu, jeśli to by pomogło (chociaż wiem, że kod instancji dla tablesorter jest w porządku, ponieważ działa na stoliki bez zakładek - tak na pewno nie jest to)
EDIT: Zgodnie z wnioskiem, oto niektóre fragmenty kodu:
tabeli są klasyfikowane jest <table id="#sortableTable#">..</table>
, kod instancji dla tablesorter używam jest:
$(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']
});
});
I próbował sklecić livequery następująco:
$("#sortableTable").livequery(function(){
$(this).tablesorter();
});
to nie pomogło ... chociaż nie jestem pewien, czy powinienem używać id tabeli z livequery gdyż jest kliknięcie na <ul>
Powinienem odpowiadać, co oczywiście nie jest częścią samej tabeli. Próbowałem wielu odmianach, w nadziei, że jeden z nich będzie pomóc, ale bezskutecznie :-(
i” Zajrzyjmy teraz do tego :-) –
spróbuj metody trigger() zgodnie z sugestią firmy elwyn, znacznie bardziej wydajnej niż reinicjowanie całej tabeli. – soupasouniq
Dzięki @soupasouniq Spróbuję tego. – simplyharsh