Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/04/2012, 11:00
Avatar de Naahuel
Naahuel
 
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 8 meses
Puntos: 192
Respuesta: Problema con filtros

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
  1. $('#selector').metodo_1();
  2. $('#selector').metodo_3();
  3. $('#selector').metodo_4();
  4. $('#selector').metodo_5();
  5. $('#selector').metodo_6();

O en tu caso:

Código Javascript:
Ver original
  1. for (..){
  2.     $('#selector').metodo();
  3. }

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 original
  1. var elemento = $('#selector');
  2. for (..){
  3.     elemento.metodo();
  4. }

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.
__________________
nahueljose.com.ar