2013-01-07 86 views
0

的下一個元素這是我的編碼,選擇父

<tr class="ar"> 
    <td> 
     <input type="checkbox" class="cbx"> 
    </td>  
    <td> 
     <span class="spc">book</span> 
    </td> 
</tr> 
<tr class="ar"></tr> 

我想要做的,如果點擊複選框或跨度(內側第一tr),我想切換類到第二tr。此外,如果複選框已被選中,那麼當點擊其中任何一個時,我需要取消選中。

+6

你有什麼這麼遠嗎? –

+0

有多少?您是否想要複選框的單選按鈕功能。 –

回答

3
$('td input[type=checkbox], td span').click(function(){ 
    $(this).closest('tr') 
     .find('input[type=checkbox]') 
     .prop("checked", false) 
     .end() 
     .next() 
     .toggleClass('yourclass'); 
}); 
+0

這會得到下一個'td'而不是'tr'。 –

+0

@AleksandrM謝謝,修正。 –

0

如果要取消選中該複選框試試這個.... ...

$('#your_checkbox_id').live('click' , function() { 
    if($('#your_checkbox_id').is(':checked')) { 
     $('#your_checkbox_id').removeAttr('checked'); 
     $(this).next().toggleClass('class_name'); 
    } 
}); 
+0

您不需要重複使用相同的選擇器。只要使用'this'。此外,「live」已棄用。 –

2

試試這個

$(".cbx2").click(function(){ 
    $(this).closest("tr.ar").next().toggleClass("toggled_class"); 
}); 

$(this).closest("tr.ar")會給你的這個最接近的父元素tr對象與ar類和.next將獲得該類型的下一個元素,這是您的第二個tr。使用

+0

你想在這裏使用'nearest()'而不是'parents()',所以沒有必要一直向上移動DOM,並且可能會碰到另一個具有'ar'類的元素 –

+0

@TimJoyce:是的,最接近的可能會更好。 –

0
$('.cbx, .spc').click(function(e){ 
    $('.cbx').prop('checked', false); // uncheck everything 

    $(this).toggleProp(checked, $(this).prop('checked')) // check/uncheck current 
      .closest('.ar').toggleClass('yourClass'); // toggle class on next tr 
}); 
0

試試這個:HTTP://jsfiddle.net/kPJJf/

$('td input[type=checkbox], td span').click(function() { 
     $(this).parents('tr').next('tr').find('span').toggleClass('spc'); 
    if($(this).parents('tr').next('tr').find('input[type="checkbox"]').is(':checked')==false){ 
     $(this).parents('tr').next('tr').find('input[type="checkbox"]').prop('checked', true); 
    }else{ 
     $(this).parents('tr').next('tr').find('input[type="checkbox"]').removeAttr('checked'); 
    } 
});