2011-10-25 26 views
0

有人可以幫我一些遍歷和一些邏輯在這裏請。邏輯是這樣的:如果有任何選中檢查其他取消選中

  1. 如果在列3中的任何複選框被選中,則檢查第一列複選框。
  2. 如果選擇沒有第3列,在列1取消選中複選框
  3. 如果COLUMN1複選框是選中,然後取消在欄3所有複選框

    <table> 
        <tr> 
         <td><input class="isSelected" type="checkbox" /></td> 
         <td>row1col2</td> 
         <td><input class="actionItem" type="checkbox" /><input class="actionItem" type="checkbox" /></td> 
        </tr> 
        <tr> 
         <td><input class="isSelected" type="checkbox" /></td> 
         <td>row2col2</td> 
         <td><input class="actionItem" type="checkbox" /><input class="actionItem" type="checkbox" /></td> 
        </tr> 
        <tr> 
         <td><input class="isSelected" type="checkbox" /></td> 
         <td>row3col2</td> 
         <td><input class="actionItem" type="checkbox" /><input class="actionItem" type="checkbox" /></td> 
        </tr> 
    </table> 
    

+6

該複選框應檢查多少檢查複選框檢查是否被選中? – Blazemonger

+0

@ mblase75沒有,或者你在做繞口令; ) – Rod

+0

我們不打算爲您編寫代碼。顯示你迄今爲止的嘗試,我們可以嘗試幫助解決它。 –

回答

2

這裏的一種方法:http://jsfiddle.net/mblase75/NDh2g/

$('table tr').find('input:checkbox:first').change(function() { 
    var $this = $(this); 
    $this.closest('tr').find('input:checkbox').prop('checked', $this.prop('checked')); 
}); 

$('table tr').find('input:checkbox:not(":first")').change(function() { 
    var tmp = true; 
    var $this = $(this); 
    $this.closest('tr').find('input:checkbox:not(":first")').each(function() { 
     tmp &= $(this).prop('checked'); 
    }); 
    $this.closest('tr').find('input:checkbox:first').prop('checked',tmp); 
}); 
1

我假設您還想取消選中第三列中的所有項目,而第一列中的複選框未選中。

試試這個:http://jsfiddle.net/MTPFK/1/

$("input.actionItem").change(function() { 
    var $t = $(this); 
    var checked = ($t.closest("td").find("input.actionItem:checked").length > 0); 
    $t.closest("tr").find("input.isSelected").prop("checked", checked); 
}); 

$("input.isSelected").change(function() { 
    var $t = $(this); 
    var status = $t.prop("checked"); 
    $t.closest("tr").find("input.actionItem").prop("checked", status); 
}); 

注意,這裏使用的類名不同類型的複選框來區分,而不是他們所在的列

要明確目標列,你可以這樣做。這樣的事情:http://jsfiddle.net/NvCDp/

$("tr > td:nth-child(3)").find("input.actionItem").change(function() { 
    var $t = $(this); 
    var checked = $t.prop("checked") ? true : ($t.siblings("input:checked").length > 0); 
    $("td:first", $t.closest("tr")).find("input") 
      .prop("checked", checked); 
}); 

$("tr > td:first-child").find("input.isSelected").change(function() { 
    var $t = $(this); 
    var checked = $t.prop("checked"); 
    $t.closest("tr").find("td:nth-child(3) input.actionItem") 
      .prop("checked", checked); 
}); 
相關問題