2011-01-07 14 views
6

Si è verificato un piccolo problema con alcuni jQuery di base, vorrei poter fare clic su una cella di tabella e quindi selezionare automaticamente il pulsante di opzione all'interno.Fare clic su td, selezionare il pulsante di opzione in jQuery

HTML:

<table> 
    <tr> 
    <td> 
    1<br> 
    <input type="radio" name="choice" value="1"> 
    </td> 
    <td> 
    2<br> 
    <input type="radio" name="choice" value="2"> 
    </td> 
    <td> 
    3<br> 
    <input type="radio" name="choice" value="3"> 
    </td> 
    </tr> 
    </table> 

jQuery:

$("td").click(function() { 

    $(this).closest('input:radio').attr('checked',true); 

}); 

Qualsiasi aiuto realmente sarebbe apprezzato, grazie!

+0

Poiché le risposte sono già corrette, aggiungerò qui che '.closest()' è per attraversare ** su ** l'albero DOM, ad es. ricevendo il '' o il '

', piuttosto che verso il basso. –

risposta

12

Utilizzare questo selettore:

$('input:radio', this).attr('checked', true); 

o utilizzando find metodo:

$(this).find('input:radio').attr('checked', true); 

Ecco come il codice dovrebbe essere simile:

$("td").click(function() { 
    $(this).find('input:radio').attr('checked', true); 
}); 
+2

Non è necessario eseguire il wrap 'this' nel costruttore jQuery quando viene utilizzato come contesto,' $ ('input: radio', this) 'è sufficiente. –

+0

Grazie mille! Una cosa rapida però, sto cambiando la classe quando viene selezionato il pulsante di opzione, ma questo non funziona quando si fa clic sulla cella, anche se il pulsante di opzione è selezionato? \t $ ("input td [type = Radio]") si legano ('cambiamento click', function() { \t \t $ ('td') removeClass ('selezionato');.. \t \t $ (questo) .parent ('td'). addClass ('selected'); \t}); – Nick

+1

@ Box9: aggiornato per evitare ulteriori confusioni :) – Sarfraz

2

Prova

$(this).find('input:radio').attr('checked','checked'); 
+0

Grazie mille :) – Nick

+0

Prego Nick –

2

Prova a cercare anziché a più vicino.

$(this).find('input:radio').attr('checked',true); 
+0

Gerard mi hai battuto per 4 minuti! arg :) –

Problemi correlati