2010-09-09 6 views
13

Estoy buscando una manera de cómo podría seleccionar un elemento div que no es el siguiente directo al que está "seleccionado" por una función de clic.Elemento Jquery Select 2 posiciones más adelante - otra forma de .next(). Next()

<div id="click">(siblings)</div><div>text</div><div id="get this one"></div> 

Ahora me gustaría para seleccionar el uno con el id "conseguir éste" - en mi código de este ID no está disponible. Todos los divs tienen la misma clase y tienen hermanos.
Podría seleccionar el tercero por $(this).next().next(), pero creo que no es la mejor manera de hacerlo.
También puede haber div antes del que se hace clic, por lo que no es necesariamente el primero.

Probé el selector :nth-child pero no encontré una solución.
Más tarde también es posible que desee seleccionar la 13ª después del clic (o la 23ª, 65ª, etc.). Esto significa que me gustaría tener una solución bastante dinámica para este problema.

Gracias por su ayuda,
Phil

Respuesta

20

Usted puede utilizar .nextAll() con .eq() para su enfoque dinámico, como esto:

$(this).nextAll().eq(1) //0 based index, this would be .next().next() 

Esto permitirá obtener n hermanos hacia adelante, lo cual parece para ser lo que buscas.

+0

Ok, ahora me siento como un ideot. Es muy fácil, y funciona, por supuesto. Tiene tanto sentido que me odio por no hacerlo funcionar solo. Pero muchas gracias :) – Phil

0

Parece que $(this).parent().find('div').eq(2).attr('id') debería funcionar.

ACTUALIZACIÓN (Añadido find ('div'))

+0

Esto siempre daría como resultado un conjunto de elementos vacío, '.parent()' selecciona un solo elemento, no hermanos :) –

+0

Antes, su respuesta tenía nextAll ('eq: 2'). ¿Esto funcionaría de la misma manera que lo que tienes para tu respuesta ahora? ¿Cual es la diferencia? – d2burke

+0

@ d2burke: Obtendrá el tercer elemento en el elemento principal, sin importar qué ... esto no se relaciona con el elemento * actual *, simplemente obtiene el tercero, sin importar cuál haya hecho clic. También mi respuesta usó ': eq (1)' para el segundo, es un índice basado en 0 :) –

Cuestiones relacionadas