2011-10-20 14 views
5

Ho questa funzione:JQuery Trova successivo elemento all'interno del Table Row

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

che ha funzionato bene 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> 

Ma ora sto mettendo "expandimg" dentro una colonna della tabella e "toggle_container "all'interno di un'altra colonna. Qualcosa del genere:

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

Come trovare l'elemento "toggle_container" ora? Voglio cliccare su "expandimg" per espandere il "toggle_container", ma non funziona con la funzione che ho.

Grazie!

+0

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

+0

Sì, penso che si dovrebbe usare .parent(): $ (this) .parent(). parent(). find ('. toggle_container') ... http://api.jquery.com/parent/ – biziclop

+1

@RaduBilei: Qualsiasi motivo per cui non stai postando quella risposta? –

risposta

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

Con il codice HTML Al momento è questo dovrebbe funzionare -

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

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

+0

Non c'è bisogno di fare 'fratelli' e quindi 'find', vai direttamente a' find'. – Shef

+0

In realtà hai avuto ragione, lo stavi facendo in un altro modo, che è probabilmente più lento a seconda della quantità di celle della tabella che l'OP avrà lì. Inoltre, non è necessario costruire un oggetto con tutti gli elementi 'td' di quel' tr'. – Shef

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

sale al elemento padre TR, ricerche che per la .toggle_container.

dovrebbe funzionare :)

+1

Questo sarà molto più lento di "più vicino", inoltre costruirà un oggetto dell'intero albero dei genitori non solo quello diretto. – Shef

Problemi correlati