2011-10-31 8 views

risposta

11

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).

+0

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

+1

@John - Sì, usare 'hide' funzionerebbe correttamente. Vedi la mia modifica. –

0

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.