Vorrei sapere come filtrare le righe della tabella in base al valore di una colonna. Plugin esclusi, vorrei capire come far funzionare questa cosa.Filtra le righe della tabella con jquery
risposta
La tua domanda è piuttosto vaga, ma l'idea generale sarebbe qualcosa di simile a questo:
$("td").filter(function() {
return $(this).text().indexOf("whatever") !== -1;
}).parent().remove();
Ecco un working example. Seleziona prima tutte le celle della tabella, quindi le filtra in base ad un testo e rimuove il genitore (che dovrebbe essere il tr
) delle righe rimanenti.
Se non si preoccupano delle singole colonne, è possibile selezionare gli elementi tr
ed eliminare la chiamata a parent
. Funzionerà ancora perché text
restituirà il testo di tutti i figli dello tr
selezionato.
Aggiornamento sulla base dei commenti
È possibile che questo rimuoverà le righe della tabella di corrispondenza dal DOM completamente. Se vuoi semplicemente nasconderli, puoi sostituire remove
con hide
. Se poi si voleva fare le righe visibili di nuovo si potrebbe semplicemente fare qualcosa di simile:
$("tr").show();
che seleziona tutti gli tr
elementi e loro (quelli che sono già visibili non saranno interessati mostra, quindi solo quelli precedentemente nascosti diventerà di nuovo visibile).
L'idea alla base di tutti i filtri di tabella è nascondere tutte le righe e quindi mostrare quelle in cui il contenuto di un <td>
include la stringa di ricerca.
Con jQuery la magia è fatto in questo modo:
$('tr').filter(":contains('" + searchstring + "')").show();
Ma non c'è alcuna necessità di utilizzare jQuery per questo - ho codificato un JS soluzione semplice per esso. Lo puoi trovare here.
funziona anche con .hide()? nel caso sia possibile, quale sarebbe un buon modo per mostrare/mostrare tutte le righe della tabella nel caso in cui voglio resettare il filtro? – mko
@John - Sì, usare 'hide' funzionerebbe correttamente. Vedi la mia modifica. –