2011-02-02 18 views
12

mam szybki jQuery pytanie:jQuery Znajdź Checkbox dziecko

Mam następujący typ tabeli:

<table id="my_table"> 
    <tr> 
    <td><input type="checkbox" value="24"></td> 
    <td> Click Here To Check The Box </td> 
    <td> Or Click Here </td> 
    </tr> 
</table> 

I w jQuery, I 'm próbuje zaznaczyć odpowiednie pole wyboru w tym wierszu, który był kliknięte.

$("#my_table tr").click(function(e) { 
    $(this).closest(":checkbox").attr("checked", checked"); 
    }); 

Ale powyższe nie działa. Jakieś szybkie pomysły na zaznaczenie pola wyboru w klikniętym wierszu? Dzięki!

Odpowiedz

27

EDIT: najlepszym rozwiązaniem na dole

zakładając, że istnieje tylko jedno pole wyboru, chciałbym dołączyć zdarzenia do td zamiast tr:

$('#my_table td').click(function(e){ 
    $(this).parent().find('input:checkbox:first').attr('checked', 'checked'); 
}); 

Example

Jeśli chcesz, aby móc odznacz pole wyboru również ...

$('#my_table td').click(function(e) { 
    var $tc = $(this).parent().find('input:checkbox:first'), 
     tv = $tc.attr('checked'); 

    $tc.attr('checked', !tv); 
}); 

Ta funkcja musi być zastosowana do che ckbox również neguje domyślne zachowanie.

Example 2

EDIT: Rozwiązanie jest najbardziej rozsądna metoda jest zrezygnować z funkcji, jeśli celem jest wejście: http://jsfiddle.net/EXVYU/5/

var cbcfn = function(e) { 
    if (e.target.tagName.toUpperCase() != "INPUT") { 
     var $tc = $(this).parent().find('input:checkbox:first'), 
      tv = $tc.attr('checked'); 
     $tc.attr('checked', !tv); 
    } 
}; 

$('#my_table td').live('click', cbcfn); 
+0

Dzięki mVChr. Świetne linki do tego przykładu i podoba mi się również odznaczenie zdolności. Twoje zdrowie! – Dodinas

+0

Właściwie to miałem tylko jedno aktualne pytanie. Zauważyłem, że w tym przykładzie nie można nawet kliknąć pola "wyboru". Jakikolwiek sposób obejść to? – Dodinas

+0

Ponownie spójrz na przykład 2. Naprawiłem to. – mVChr

4

Metoda jQuery closest() znajduje najbliższy element nadrzędny.

Naprawdę chcesz szukać elemets potomnych, można spróbować wykonać następujące czynności:

$("#my_table tr").click(function(e) { 
    $(":checkbox:eq(0)", this).attr("checked", "checked"); 
    }); 

zasadzie szukasz pierwszego wyboru znalezionego w wierszu tabeli

niektóre odniesienia

jQuery :eq() selector

......

-1

spróbować również ...

$("#my_table tr").click(function(e) { 
$(this).closest("type:checkbox").attr("checked", checked"); 
}); 
+0

Jest to po prostu błędne, ponieważ metoda najbliższa jQuery() działa w drzewie DOM, co oznacza, że ​​znajdzie najbliższego rodzica pasuje do: –

+0

ok..dzięki za wskazanie tego !!! – Vivek

0
$("#my_table tr").click(function(e) { 
    state= $(this).find(":checkbox:eq(0)").attr("checked"); 
    if (state==true){ // WITH TOGGLE 
     $(this).find(":checkbox:eq(0)").removeAttr("checked"); 
    }else { 
     $(this).find(":checkbox:eq(0)").attr("checked", "checked"); 
    }  
}); 

Robię prosty skrypt, aby sprawdzić pierwsze pole wyboru w tr. o przełączaniu i po prostu próbuję go wypróbować przed wysłaniem tej odpowiedzi.

Powiązane problemy