2014-04-01 61 views
0

嗨,大家好:)我有這個代碼,當點擊複選框時添加類「選中」我的< tr>在表中。但是如何使它在我點擊我的< tr>時也能正常工作?如何使當你點擊<tr>標記複選框

<tr> 
    <td><input type="checkbox"></td> 
    <td><img src="../gallery/thumbnails/1.png" alt=""></td> 
    <td>tryb</td> 
    <td>png</td> 
</tr> 
<tr> 
    <td><input type="checkbox"></td> 
    <td><img src="../gallery/thumbnails/2.png" alt=""></td> 
    <td>test</td> 
    <td>png</td> 
</tr> 

<script type="text/javascript"> 
    $(':checkbox').change(function() { 
     $(this).parents('tr').toggleClass('selected', this.checked); 
    }).change(); 
</script> 
+0

你想用'最接近( 「TR」)'不'父母( 'TR') '。 – RoToRa

回答

0

添加單擊事件tr也:

<script type="text/javascript"> 
    $(':checkbox').change(function() { 
     $(this).parents('tr').toggleClass('selected', this.checked); 
    }).change(); 

    $("tr").click(function(){ 
     if($(this).find(":checkbox").is(":checked")) 
      $(this).find(":checkbox").attr("checked",false); 
     else 
      $(this).find(":checkbox").attr("checked",true); 

     $(":checkbox").change(); 
    }); 
</script> 
+0

它很好,但只有當我點擊。當我點擊複選框沒有任何反應(除了現在,當我點擊這也是行不通的) – Axwell

+0

你必須檢查e.target。如果e.target ==複選框,則不要觸發tr的點擊事件。 – Arjun

+0

@Axwell,這是因爲點擊輸入是在tr上單擊並調用兩個函數(哪一個可以相互抵消),您需要創建一個條件if($(event.target).is(input))返回false;' –

0

可以跳跳虎複選框單擊事件,當tr點擊

$(':checkbox').change(function (event) { 
    $(this).parents('tr').toggleClass('selected', this.checked).addClass("checkbox"); 
}); 

// when click on tr it trigger checkbox click event 
$('tr').click(function(event) { 
    if(!$(this).is('.checkbox')) { 
    $(this).find('input[type="checkbox"]').click(); 
    } 
    $(this).removeClass('checkbox'); 
}); 

UPDATE用取巧的辦法,以防止複選框雙重效果

+0

工作在50%。點擊複選框不起作用。 – Axwell

0

再添加一個事件偵聽器

$('tr').on('click',function(){ 
    $(this).toggleClass('selected'); 
}); 

並加e.stopPropagation()checkbox更改處理 -

$(':checkbox').change(function (e) { 
     e.stopPropagation(); 
     $(this).parents('tr').toggleClass('selected', this.checked); 
}).change(); 
0
$('tr').click(function(){ 
    $(this).find('input[type=checkbox]').prop('checked', true); 
}); 
+0

應該是'.prop('checked',function(){ return!this.checked; });'使其切換。 –