2011-01-07 21 views
6

Masz mały problem z bardzo podstawową jQuery, chciałbym móc kliknąć komórkę tabeli, a następnie automatycznie wybrać przycisk radiowy w środku.Kliknij przycisk td, wybierz przycisk radiowy w 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); 

}); 

Każda pomoc będzie naprawdę należy zauważyć, dziękuję!

+0

Ponieważ odpowiedzi są już poprawne, dodam tutaj, że '.closest()' służy do przechodzenia ** w górę ** drzewa DOM, np. uzyskanie '' lub '

' zamiast w dół. –

Odpowiedz

12

Użyj tego selektora:

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

lub używając find metody:

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

Oto jak kod powinien wyglądać następująco:

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

Nie trzeba pakować 'this' w konstruktorze jQuery, gdy jest używany jako kontekst, wystarczy' $ ('input: radio', this) '. –

+0

Dziękuję bardzo! Jedną szybką rzeczą jest to, że zmieniam klasę po wybraniu przycisku opcji, ale to nie działa, gdy klikniesz komórkę, mimo że wybrano przycisk opcji? \t $ ("td wejście [Typ = radiowej]") wiążą się ('zmiany kliknięcie', funkcja() { \t \t $ ('td') removeClass ('wybrany').. \t \t $ (to) .parent ("td"). addClass ("wybrany"); \t}); – Nick

+1

@ Box9: Zaktualizowany w celu uniknięcia dalszego zamieszania :) – Sarfraz

2

Spróbuj

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

Dziękuję bardzo :) – Nick

+0

Nie ma za co Nick –

2

Spróbuj znaleźć zamiast najbliżej.

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

Gerard pokonałeś mnie 4 minuty! arg :) –

Powiązane problemy