2011-10-20 14 views
5

Tengo esta función:jQuery Buscar siguiente elemento dentro de la tabla Fila

$("span.expandimg").click(function(){ 
    $(this).nextAll(".toggle_container:first").slideToggle("slow"); 
}); 

que funcionó muy bien con:

<span class="expandimg"><a href="#"><img id="iexpand" src="images/expand.png" border="0" /><img id="icollapse" src="images/collapse.png" border="0" /></a></span>&nbsp;<a href="asdfa" class="DSF">First Link</a> 

<div class="toggle_container"> 
Some Text 
</div> 

pero ahora estoy poniendo "expandimg" dentro de una columna de tabla y "toggle_container "dentro de otra columna. Algo como esto:

<tr> 
    <td><span class="expandimg">......</td> 
    <td><div class="toggle_container">.....</td> 
<tr> 

¿Cómo puedo encontrar el elemento "toggle_container" ahora? Quiero hacer clic en "expandimg" para expandir "toggle_container", pero no funciona con la función que tengo.

Gracias!

+0

http://api.jquery.com/category/traversing/ – Blazemonger

+0

Sí, creo que se debe utilizar .parent(): $ (this) .parent(). parent(). find ('. toggle_container') ... http://api.jquery.com/parent/ – biziclop

+1

@RaduBilei: ¿Alguna razón por la que no publicas eso como respuesta? –

Respuesta

10
$("span.expandimg").click(function(){ 
    $(this) 
     .closest("tr") 
     .find("td .toggle_container") 
     .slideToggle("slow"); 
}); 
0

Con el HTML que actualmente tienen esto debería funcionar -

$("span.expandimg").click(function(){ 
    $(this).parent().siblings().find(".toggle_container:first").slideToggle("slow"); 
}); 

Demo - http://jsfiddle.net/QAkKP/

+0

No es necesario hacer 'brothers' y luego' find', ir directamente a 'find'. – Shef

+0

En realidad, usted tenía razón, lo estaba haciendo de otra manera, que probablemente sea más lenta dependiendo de la cantidad de celdas de la tabla que tendrá el OP allí. Además, no es necesario construir un objeto con todos los elementos 'td' de ese' tr'. – Shef

0
$("span.expandimg").click(function(){ 
    $(this).parents("tr").find(".toggle_container").slideToggle("slow"); 
}); 

sube el elemento TR padres, las búsquedas que para el .toggle_container.

debería funcionar :)

+1

Esto será mucho más lento que 'más cercano', además construirá un objeto del árbol de padres completo no solo el directo. – Shef

Cuestiones relacionadas