2011-10-31 12 views
10

Chciałbym wiedzieć, jak filtrować wiersze tabeli na podstawie wartości kolumny. Wtyczki wykluczone, chciałbym dowiedzieć się, jak sprawić, aby to coś działało.Wiersze tabeli filtrów z jquery

Odpowiedz

11

Twoje pytanie jest dość niejasne, ale ogólna idea byłoby coś takiego:

$("td").filter(function() { 
    return $(this).text().indexOf("whatever") !== -1; 
}).parent().remove(); 

Oto working example. Najpierw wybiera wszystkie komórki tabeli, a następnie filtruje je w oparciu o jakiś tekst i usuwa rodzica (który powinien być tr) z pozostałych wierszy.

Jeśli nie interesują Cię poszczególne kolumny, możesz wybrać elementy tr i usunąć połączenie z numerem parent. To nadal będzie działać, ponieważ text zwróci tekst wszystkich dzieci z wybranego tr.

Aktualizacja na podstawie uwag

Powyższy usunie wiersze z tabeli dopasowanie DOM całkowicie. Jeśli chcesz je po prostu ukryć, możesz zastąpić remove przez hide. Jeśli następnie chciał uczynić wiersze widoczne ponownie można po prostu zrobić coś takiego:

$("tr").show(); 

który wybiera wszystkie tr elementy i pokazuje je (te, które są już widoczne nie zostaną naruszone, więc tylko te, wcześniej ukryte staną się znowu widoczne).

+0

będzie to również działać z .hide()? w przypadku, gdy jest to możliwe, jaki byłby dobry sposób pokazania/pokazania wszystkich wierszy tabeli na wypadek, gdy chcę zresetować filtr? – mko

+1

@John - Tak, użycie 'hide' będzie działało dobrze. Zobacz moją edycję. –

0

Podstawową ideą wszystkich filtrów tabel jest ukrycie wszystkich wierszy, a następnie pokazanie tych, w których zawartość pliku <td> zawiera łańcuch wyszukiwania.

z jQuery magia odbywa się to tak:

$('tr').filter(":contains('" + searchstring + "')").show(); 

Ale nie ma potrzeby korzystania z jQuery do tego - mam zakodowane zwykły JS-rozwiązania. Możesz go znaleźć here.

Powiązane problemy