2009-11-02 16 views
18

Tengo una tabla, que contiene filas, las células contaning - y algunos de ellos contienen un img de la siguiente manera:jQuery: encuentra próxima table-row

<img id="FormView1_btnSave_row1%1%new" style="border-width: 0px; cursor: pointer;" 
src="grafik/ok_16x16.gif" onclick="cleverStuff(this)"/> 

En la función cleverStuff quisiera operar en la línea que sigue la línea en la que se hizo clic en el botón: este botón especial está contenido en la última línea visible solamente, hay un montón de líneas ocultas debajo y quiero que la primera línea oculta sea visible, pero no logro llegar a la siguiente línea. Según tengo entendido, todas las combinaciones de parent() y next() podrían usarse para pasar de la img a la td, a la tr y finalmente a la siguiente tr. así que traté de verificar esto:

$(ctrl).attr('id') correctamente devuelve el id del img :)

$(ctrl).parent().attr('id') devuelve un valor nulo.

¿Qué me falta aquí?

+0

Bueno, ¿cuál es el código HTML para los padres del img? ¿Tiene una identificación? – Victor

Respuesta

60

Esto debe darle el tr envolvente del elemento, incluso si no es el padre directo del elemento, a continuación, la siguiente fila de esa fila. si usa parent en un elemento que está dentro de un td, le dará la columna, no la fila. El suministro de un filtro al método parent() simplemente filtrará el elemento primario, a menos que coincida con el filtro, lo que generalmente no da como resultado elementos coincidentes. Más cercano es probablemente lo que desea, pero los padres ('tr') podrían ser necesarios si tiene tablas anidadas y desea la fila externa en lugar de la fila interna.

$(this).closest('tr').next('tr') 
+0

+1 Siempre los confundí: | – Greg

+0

esto me devuelve el tr anterior. :/ – AlphaMale

+2

@AlphaMale que no me parece posible – tvanfosson

30

no nos muestran lo suficientemente HTML realmente pero esto debería funcionar:

$(ctrl).parent('tr').next(); 
+0

Gracias Greg - has sido muy rápido y me has puesto en el camino correcto: he reemplazado mi "padre" vacío con el padre (tr) y de repente las cosas se veían mejor :) Daré el "cheque" y si es posible también califica a toby y tvanfosson que respondieron en la misma línea. – MBaas

+0

@ la respuesta de tvanosson es mejor – Greg

5

Tal vez el elemento padre no tenía su conjunto identificación? Para llegar a la siguiente fila de la imagen que creo que puede hacer:

$(this).parent('tr').next('tr') 
1

espero u puede utilizar

jQuery(this).parents('tr'); 
Cuestiones relacionadas