Javascript 如果选中了任何复选框,请选中其他复选框

Javascript 如果选中了任何复选框,请选中其他复选框,javascript,jquery,Javascript,Jquery,有人能帮我做一些遍历和逻辑吗。逻辑是这样的: 如果选中了第3列中的任何复选框,则选中第一列复选框 如果选择了第3列中的“无”,请取消选中第1列中的复选框 如果未选中column1复选框,则取消选中column3中的所有复选框 <table> <tr> <td><input class="isSelected" type="checkbox" /></td> <td>row1col2<

有人能帮我做一些遍历和逻辑吗。逻辑是这样的:

  • 如果选中了第3列中的任何复选框,则选中第一列复选框
  • 如果选择了第3列中的“无”,请取消选中第1列中的复选框
  • 如果未选中column1复选框,则取消选中column3中的所有复选框

    <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>
    

    
    row1col2
    row2col2
    row3col2
    

  • 这里有一种方法:

    这里有一种方法:


    我假设当第一列中的复选框未选中时,您也希望取消选中第三列中的所有项目

    试试这个:

    注意,这使用类名来区分不同的复选框类型,而不是它们所在的列

    要明确针对列,可以执行以下操作:


    我假设当第一列中的复选框未选中时,您也希望取消选中第三列中的所有项目

    试试这个:

    注意,这使用类名来区分不同的复选框类型,而不是它们所在的列

    要明确针对列,可以执行以下操作:


    如果选中复选框,该复选框应选中多少个复选框?@mblase75 none,或者您正在使用绕口令;)我们不会为你写代码。显示您迄今为止尝试的内容,我们可以尝试帮助修复它。@JamesHill-$(this).closest('tr')。find('isSelected')。attr('checked',true')是第一次尝试,但没有成功。当穿越!如果选中复选框,该复选框应选中多少个复选框?@mblase75 none,或者您正在使用绕口令;)我们不会为你写代码。显示您迄今为止尝试的内容,我们可以尝试帮助修复它。@JamesHill-$(this).closest('tr')。find('isSelected')。attr('checked',true')是第一次尝试,但没有成功。当穿越!
    $('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);
    });
    
    $("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);   
    });
    
    $("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);
    });