1ro: Existe ya un plugin que hace eso. Lo he usado muchas veces y es rápido:
http://www.picnet.com.au/picnet-table-filter.html
2do: Relativo a tu problema. Tu error es un grave error de absolutamente el 100% de las personas que inician en jQuery sin saber JavaScript (me incluyo). Uno se cansa de ver códigos así:
Código Javascript
:
Ver original$('#selector').metodo_1();
$('#selector').metodo_3();
$('#selector').metodo_4();
$('#selector').metodo_5();
$('#selector').metodo_6();
O en tu caso:
Código Javascript
:
Ver originalfor (..){
$('#selector').metodo();
}
La función $() recibe un selector CSS como parámetro. jQuery usa un parser especial para
recorrer el DOM buscando y recolectando los elementos que coinciden con el selector. Si llamás a la función $() en cada ciclo, pues claro que te va a andar lento. Más todavía con selectores tan complejos.
Solución:
Código Javascript
:
Ver originalvar elemento = $('#selector');
for (..){
elemento.metodo();
}
Hay muchas formas de hacer tu código funcionar con jQuery y que sea eficiente. La regla 1 es no obtener los elementos que necesitamos 1000000 veces.
-edit-
Analizando mejor tu código, veo que si es necesario usar un selector en cada ciclo. Sin embargo probablemente exista una forma mejor, como almacenar la tabla completa en la memoria y analizarla desde ahí usando .filter() en lugar de recorrer el DOM millones de veces.