Mam bardzo prostą tabelę HTML z 4 kolumnami:
Facility Name, Phone #, City, Specialty
Chcę, aby użytkownik mógł sortować tylko według nazwy obiektu i miasta .
Jak mogę to zakodować za pomocą jQuery?
jquery
sorting
html-table
tony noriega
źródło
źródło
Odpowiedzi:
Jeśli chcesz uniknąć wszystkich dzwonków i gwizdów, mogę zasugerować tę prostą
sortElements
wtyczkę . Stosowanie:I demo. (kliknij nagłówki kolumn „miasto” i „placówka”, aby posortować)
źródło
Error: illegal character
html nie jest dokładnie taki sam, mam też thead i tboy, czy możesz mi w tym pomóc?$.text([a]) == $.text([b])
używać$.text([a]).toUpperCase() == $.text([b]).toUpperCase()
, naprawi to.Natknąłem się na to i pomyślałem, że dorzucę moje 2 centy. Kliknij nagłówki kolumn, aby posortować rosnąco i ponownie, aby posortować malejąco.
** Aktualizacja: 2018
źródło
td
s, np<a href="#">Test</a>
. Sortowanie dotyczy<a...
. Aby posortować tylko według tekstu, musisz zmienićhtml()
w ostatnim wierszu natext()
.comparer(..)
jeśli wiesz dokładnie, jaki format chcesz obsługiwać). W międzyczasie, jeśli używaszyyyy-MM-dd
"string
" sortowania uporządkuje dane za Ciebie. np. jsbin.com/pugedip/1Zdecydowanie najłatwiejszy z nich to: http://datatables.net/
Niezwykle proste ... po prostu upewnij się, że wybierzesz trasę zastępującą DOM (IE, budując tabelę i pozwalając DataTables na ponowne jej sformatowanie), a następnie upewnij się, że sformatujesz tabelę za pomocą
<thead>
i<tbody>
lub nie zadziała. To chyba jedyny sposób.Jest też wsparcie dla AJAX, itp. Podobnie jak w przypadku wszystkich naprawdę dobrych fragmentów kodu, BARDZO łatwo jest je wyłączyć. Zdziwiłbyś się jednak, czego możesz użyć. Zacząłem od „gołego” DataTable, który posortował tylko jedno pole, a potem zdałem sobie sprawę, że niektóre funkcje były naprawdę istotne dla tego, co robię. Klienci KOCHAJĄ nowe funkcje.
Dodatkowe punkty do DataTables za pełną obsługę ThemeRoller ...
Miałem też dobre szczęście z tableorter, ale nie jest to tak łatwe, nie tak dobrze udokumentowane i ma tylko dobre funkcje.
źródło
Właśnie zaczęliśmy używać tego zgrabnego narzędzia: https://plugins.jquery.com/tablesorter/
Film przedstawiający jego użycie jest dostępny pod adresem : http://www.highoncoding.com/Articles/695_Sorting_GridView_Using_JQuery_TableSorter_Plug_in.aspx
Z prostym stołem
źródło
Moja odpowiedź brzmiałaby: „bądź ostrożny”. Wiele dodatków do sortowania tabel jQuery sortuje tylko to, co jest przekazywane do przeglądarki. W wielu przypadkach należy pamiętać, że tabele są dynamicznymi zbiorami danych i mogą potencjalnie zawierać miliardy wierszy danych.
Wspominasz, że masz tylko 4 kolumny, ale co ważniejsze, nie wspominasz o liczbie wierszy, o których tutaj mówimy.
Jeśli przekażesz do przeglądarki 5000 wierszy z bazy danych, wiedząc, że rzeczywista tabela bazy danych zawiera 100 000 wierszy, moje pytanie brzmi: jaki jest sens w tworzeniu sortowania tabeli? Aby przeprowadzić właściwe sortowanie, należałoby odesłać zapytanie z powrotem do bazy danych i pozwolić bazie danych (narzędziu faktycznie zaprojektowanemu do sortowania danych) przeprowadzić sortowanie za Ciebie.
Odpowiadając wprost na twoje pytanie, najlepszym dodatkiem do sortowania, z jakim się spotkałem, jest Ingrid. Jest wiele powodów, dla których nie podoba mi się ten dodatek ("niepotrzebne dzwonki i gwizdki ...", jak to nazywasz), ale jedną z jego najlepszych cech pod względem rodzaju jest to, że używa Ajaxa i nie robi Załóżmy, że przekazałeś już wszystkie dane, zanim przeprowadzi sortowanie.
Zdaję sobie sprawę, że ta odpowiedź jest prawdopodobnie przesadzona (i spóźniona o ponad 2 lata) dla twoich wymagań, ale denerwuję się, gdy programiści z mojej dziedziny przeoczają ten punkt. Mam więc nadzieję, że ktoś inny to odbierze.
Czuję się teraz lepiej.
źródło
To dobry sposób na sortowanie tabeli:
Skrzypce można znaleźć tutaj:
https://jsfiddle.net/e3s84Luw/
Wyjaśnienie można znaleźć tutaj: https://www.learningjquery.com/2017/03/how-to-sort-html-table-using-jquery-code
źródło
Uwielbiam tę zaakceptowaną odpowiedź, jednak rzadko pojawiają się wymagania dotyczące sortowania html i nie musisz dodawać ikon wskazujących kierunek sortowania. Wziąłem przykład użycia akceptacji odpowiedzi i szybko to naprawiłem, po prostu dodając bootstrap do mojego projektu i dodając następujący kod:
<div></div>
wewnątrz każdego
<th>
, aby mieć miejsce na ustawienie ikony.setIcon(this, inverse);
z Użycie zaakceptowanej odpowiedzi, poniżej linii:
th.click(function () {
i dodając metodę setIcon:
Oto demo . - Musisz albo uruchomić wersję demonstracyjną w przeglądarce Firefox lub IE, albo wyłączyć sprawdzanie typu MIME w przeglądarce Chrome, aby demonstracja działała. Zależy to od wtyczki sortElements, połączonej zaakceptowaną odpowiedzią, jako zasób zewnętrzny. Tylko jedno ostrzeżenie!
źródło
Oto wykres, który może być pomocny w podjęciu decyzji, którego użyć: http://blog.sematext.com/2011/09/19/top-javascript-dynamic-table-libraries/
źródło
@Nick Grealy za odpowiedź jest super, ale nie bierze pod uwagę możliwe
rowspan
atrybutów komórki nagłówka tabeli (i prawdopodobnie inne odpowiedzi nie zrobić albo). Oto ulepszenie odpowiedzi @Nick Grealy, które to rozwiązuje. Na podstawie tej odpowiedzi również (dzięki @Andrew Orlov).Zastąpiłem również
$.isNumeric
funkcję niestandardową (dzięki @zad), aby działała ze starszymi wersjami jQuery.Aby go aktywować, dodaj
class="sortable"
do<table>
tagu.źródło
Możesz użyć wtyczki jQuery ( breedjs ), która zapewnia sortowanie, filtrowanie i paginację:
HTML:
JS:
Przykład pracy na skrzypcach
źródło
Ten nie zawiesza przeglądarek, można je dalej łatwo konfigurować:
źródło
W odpowiedzi Jamesa zmienię tylko funkcję sortowania, aby była bardziej uniwersalna. W ten sposób posortuje tekst alfabetycznie, a liczby takie jak liczby.
źródło
Inne podejście do sortowania tabeli HTML. (na podstawie sortowania HTML W3.JS )
źródło
Skończyło się na odpowiedzi Nicka (najpopularniejszej, ale nie akceptowanej) https://stackoverflow.com/a/19947532/5271220
i połączyłem to z https://stackoverflow.com/a/16819442/5271220, ale nie chciałem dodawać ikon ani fontawesome do projektu. Style CSS dla sort-column-asc / desc Zrobiłem kolor, dopełnienie, zaokrąglone obramowanie.
Zmodyfikowałem go również tak, aby działał według klas, a nie według jakichkolwiek, abyśmy mogli kontrolować, które z nich można sortować. Może się to również przydać później, jeśli istnieją dwie tabele, chociaż należałoby w tym celu wprowadzić więcej modyfikacji.
ciało:
... dalej w dół ciała
Funkcje:
źródło
Mój głos! jquery.sortElements.js i proste jquery
Bardzo proste, bardzo łatwe, dzięki nandhp ...
Dei uma melhorada do código
Jeden dorsz lepiej! Funkcja dla wszystkich stołów w całym Th ... Zobacz to!
PRÓBNY
źródło
.live()
.