2011-01-07 43 views
6

Có vấn đề nhỏ với một số jQuery rất cơ bản, tôi muốn có thể nhấp vào ô bảng và sau đó tự động chọn nút radio bên trong.Nhấp vào td, chọn nút radio trong 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); 

}); 

Bất kỳ sự giúp đỡ thực sự sẽ được đánh giá, cảm ơn bạn!

+0

Vì câu trả lời đã chính xác, tôi sẽ chỉ thêm ở đây rằng '.closest()' là để duyệt qua ** lên ** cây DOM, ví dụ: nhận được ' 'hoặc'

', thay vì giảm. –

Trả lời

12

Sử dụng selector này:

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

Hoặc sử dụng find phương pháp:

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

Dưới đây là làm thế nào mã của bạn sẽ giống như thế:

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

Không cần bọc 'this' trong hàm tạo jQuery khi được sử dụng như một ngữ cảnh,' $ ('input: radio', this) 'là đủ. –

+0

Cảm ơn bạn rất nhiều! Một điều nhanh chóng mặc dù, tôi đang thay đổi lớp khi nút radio được chọn, nhưng điều này không hoạt động khi bạn nhấp vào ô, mặc dù nút radio được chọn? \t $ ("td input [type = radio]") bind ('thay đổi nhấp chuột', function() { \t \t $ ('td') removeClass ('chọn');.. \t \t $ (this) .parent ('td'). addClass ('đã chọn'); \t}); – Nick

+1

@ Box9: Đã cập nhật để tránh bất kỳ sự nhầm lẫn nào khác) – Sarfraz

2

Hãy thử

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

Cảm ơn bạn rất nhiều :) – Nick

+0

Bạn đang chào đón Nick –

2

Thử tìm kiếm thay vì gần nhất.

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

Gerard bạn đánh bại tôi bằng 4 phút! arg :) –

Các vấn đề liên quan