2009-12-23 15 views
12

Mi problema es que tengo una tabla, pero solo quiero un subconjunto de las filas, desde el primer índice hasta el último índice. Pensé que podría hacerlo de esta manera:Obtener un rango de elementos en un selector de jQuery

$('table tr:gt(2):lt(5)'); 

pensé que le daría sólo las filas # 3 y # 4 pero termina dándole más que eso. ¿Cómo puedo decirle al selector que elija solo las filas 3 y 4?

+0

Véase también [.slice()] (http://api.jquery.com/slice/) –

Respuesta

19

Estás muy cerca, pero el problema en tu selector es el filtro :lt(5).

Usted quiere algo como:

$('table tr:gt(2):lt(2)'); 

La diferencia es que en el momento en que se aplica el filtro de lt(), los tres primeros elementos ya fueron retirados del conjunto (por el filtro gt()). Por lo tanto, esto tomará el tercer y cuarto elemento (sin índice), en lugar del tercero al octavo.

+0

¡Perfecto! Esto funciona como se esperaba Gracias por aclarar eso. – Bob

+0

Supongo que como una pregunta complementaria dónde puedo enviar una solicitud de función para agregar un selector de rango, para que se parezca a $ ('tabla tr: en (2,4)') o hay un complemento que ya cumple con tal funcionalidad? – Bob

+1

@Bob deberías buscar usar 'slice' como @DaveWard respondió. es mucho más legible y funcionará de la manera que usted espera. Además, no obtiene ningún aumento de rendimiento al hacer las cosas de esta manera, sigue encontrando todas las 'tabla tr' luego filtrando esa lista. –

0

Creo que ya lo tienes perfecto, aunque me imagino que jQuery contará desde 0 en su índice de elementos.

¿Sería gt (1) y lt (4)?

+0

Correcto, es del índice cero. Mi error. – Bob

10

¿Qué hay de $ ('mesa de tr'). Rebanada (2, 4)

Desde matrices de JavaScript están indexados 0, que le dará la tercera y cuarta fila de la tabla. Slice aún devolverá un jQuery wrapped (sub) set, por lo que es el mismo resultado final.

+0

Sí, pero quiero que el selector solo busque las filas especificadas. Con ese método, jQuery primero recupera todas las filas de la tabla y luego filtra las tablas no deseadas. – Bob

+0

@Bob, lo hace incluso si usa la versión del selector –

+0

Oh, eso es decepcionante. Supuse que internamente jQuery saltaría las filas que son menores que el índice dado, o se detendría cuando las filas sean mayores que el índice dado cuando use sus respectivos modificadores de selector. Al menos de esa manera no tendría que considerar todas las filas de la tabla. – Bob

Cuestiones relacionadas