2011-10-31 29 views

Respuesta

11

Su pregunta es muy vaga, pero la idea general sería algo como esto:

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

Aquí hay una working example. Primero selecciona todas las celdas de la tabla, luego las filtra basándose en algún texto y elimina la matriz (que debe ser el tr) de las filas restantes.

Si no le importan las columnas individuales, puede seleccionar los elementos tr y deshacerse de la llamada al parent. Eso seguirá funcionando porque text devolverá el texto de todos los elementos secundarios del tr seleccionado.

actualización basado en los comentarios

Lo anterior se eliminarán las filas de la tabla coincidente de la DOM por completo. Si desea ocultarlos, puede reemplazar remove con hide. Si a continuación, quería hacer las filas visibles de nuevo simplemente podría hacer algo como:

$("tr").show(); 

que selecciona todos los tr elementos y ellos (los que ya son visibles no se verá afectada muestra, por lo que sólo los que ocultan previamente se volverá visible de nuevo).

+0

¿funcionará esto con .hide() también? en caso de que sea posible, ¿cuál sería una buena manera de mostrar/mostrar todas las filas de la tabla en caso de que quiera restablecer el filtro? – mko

+1

@John - Sí, usar 'hide' funcionaría bien. Ver mi edición –

0

La idea básica detrás de todo el filtrado de tablas es ocultar todas las filas y luego mostrar aquellas donde el contenido de un <td> tiene la cadena de búsqueda incluida.

con jQuery la magia se hace así:

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

Pero no hay necesidad de usar jQuery para esto - He codificado un JS-solución sencilla para ello. Puede encontrarlo here.

Cuestiones relacionadas