¿Cómo selecciono los siguientes elementos “n” a partir del elemento actual en jQuery?

2 minutos de lectura

avatar de usuario
cristo

¿Cómo selecciono los siguientes elementos “n” a partir del elemento actual? Lo que quiero decir es…

 $(this).attr(...);

Quiero hacer esto “n” veces. Para el ejemplo de n=4:

$(this).attr(...);
$(this).next().attr(...);
$(this).next().next().attr(...);
$(this).next().next().next().attr(...);

o tal vez hacerlo en un bucle:

for (i = 0; i < n; i++) {
    $(this).next().attr(...);
}

¿Cómo puedo hacer esto? ¿Hay alguna manera de hacer esto seleccionando los siguientes elementos “n” o en un bucle?

  • ¿Por qué diablos fue votado negativo? Esto está bien redactado, y es un problema habitual.

    – Stefan Kendall

    11 de agosto de 2010 a las 19:11

  • Acordado. Dos votos negativos y ninguna explicación. Las personas que votan negativamente deben dejar una razón. Me parece una pregunta perfectamente razonable.

    – usuario113716

    11 de agosto de 2010 a las 19:18


avatar de usuario
gilipollas

Esto debería funcionar:

$(this).nextAll().slice(0,4).attr(…)

Actualizar:

Esto también funcionará:

$(this).nextAll("*:lt(4)").attr(…)

  • ¿sería el ‘0’ en slice() $(this)?

    – Hristo

    11 de agosto de 2010 a las 19:18

  • no, porque antes de eso llamas .nextAll() esto no contiene el elemento en sí

    – jigfox

    11 de agosto de 2010 a las 19:20

  • @Hristo: si también necesita el original, puede llamar $(this).nextAll().andSelf()....

    – usuario113716

    11 de agosto de 2010 a las 19:29


  • @jigfox… ¿es .slice() inclusivo o exclusivo en los parámetros?

    – Hristo

    11 de agosto de 2010 a las 19:52

  • @Hristo: el primer parámetro es inclusivo, el segundo exclusivo

    – jigfox

    11 de agosto de 2010 a las 20:53

la nextAll método selecciona los siguientes hermanos de un elemento, opcionalmente filtrados por un selector. A continuación, podría seguir eso con un slice para restringir a un n más pequeño.

$(this).slice(start_index, end_index) seleccionará una parte de su selección. Puede realizar un seguimiento de su índice actual en el ciclo y luego aplicar el .slice(cur_index, cur_index+n) Funciona en el conjunto original cuando alcanzas tu condición.

¿Ha sido útil esta solución?