选中所有复选框时自动选中 table

Auto checked table when all checkboxes are checked

我是 jQuery 的新手。基本上我有几个 table,当 table 的所有元素都被选中时,我必须为每个 table 勾选最后一个复选框。 这是一个简单的演示,它是我想要的结果。
演示:Fiddle

到目前为止,这就是我所做的,但它仍然检查了我的最后一个复选框,尽管该字段的元素并未全部选中。

$('table tr:last-child input:checkbox').closest('table').find('input:checkbox').each(function() {
        if ($(this).is(":checked")) {
           $('table tr:last-child input:checkbox').prop('checked',true);
        }
});

试试这个:- http://jsfiddle.net/3rc1hwk4/9/

JS:-

//change event handler for the checkbox in the last tr 

$('table tr:last-child input:checkbox').change(function () {
    //use closest to find the table containing the changed checkbox and set the checked value for each checkbox in that table to the new status
    $(this).closest('table').find('input:checkbox').prop('checked', this.checked);
});

$('table tr:last-child input:checkbox').closest('table').find('input:checkbox').each(function () {
    if ($(this).is(":checked") && !$(this).is(":last-child")) {
        $('table tr:last-child input:checkbox').prop('checked', true);
    }
});

看看这个演示- http://jsfiddle.net/5h25ngvw/

我将复选框 class 命名为 group ,底部一行的复选框命名为 parent

查找包含 class .group.

的已检查输入 的长度
$('table').find('.group:checked').length

当前table-

中所有底层复选框的长度
$('table').find('.group').length

这是如何工作的-

假设您有 12 个复选框,其中 8 个被选中,现在您检查所有复选框的长度为 if(12==8)?then check the bottom one :else remained unchecked.

正在加载文档

现在加载事件直接检查每个 table 与上面相同的逻辑。它遍历每个 table 并找到所有选中和未选中的复选框,并比较它们的长度是否相等。

$('.group').change(function(){
        if($(this).closest('table').find('.group:checked').length==$(this).closest('table').find('.group').length){
        $(this).closest('table').find('input[class="parent"]').prop('checked','checked')
        }
        else
        {
       $(this).closest('table').find('input[class="parent"]').prop('checked',false);
        }

    });

onload 复选框加载事件-

$('table').each(function(){
    if($(this).find('input.group').length==$(this).find('input:checked').length){
    $(this).find('input.parent').prop('checked',true);
    }
});

此外,我会减少代码并用最小化的代码更新给你

试试这个 Fidle https://jsfiddle.net/3rc1hwk4/28/

我已将 class 应用于具有复选框“”的 TR,但最后一个 TR 除外。这是我的代码

//change event handler for the checkbox in the last tr 
$('table tr:last-child input:checkbox').change(function(){
    //use closest to find the table containing the changed checkbox and set the checked value for each checkbox in that table to the new status
    $(this).closest('table').find('input:checkbox').prop('checked', this.checked);
}); 
$('table tr.checkboxes td input:checkbox').change(function(){
    var all_checked = true;
    $(this).closest('table').find('tr.checkboxes input:checkbox').each(function () {
        if (!$(this).is(":checked")) {
            all_checked = false;    
        }
    });
    if (all_checked) {
        $(this).closest('table').find('tr:last-child input:checkbox').prop('checked',true);
    } else {
        $(this).closest('table').find('tr:last-child input:checkbox').prop('checked',false);
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table border="1">
    <tr>
        <td>System Setting</td>
        <td>(View Action)</td>
        <td>(Add Action)</td>
        <td>(Update Action)</td>
        <td>(Delete Action)</td>
    </tr>
    <tr class="checkboxes">
        <td>1. Manage Main Module</td>
        <td>
            <input type="checkbox">
        </td>
        <td>
            <input type="checkbox">
        </td>
        <td>
            <input type="checkbox">
        </td>
        <td>
            <input type="checkbox">
        </td>
    </tr>
    <tr class="checkboxes">
        <td>2. Manage Sub Module</td>
        <td>
            <input type="checkbox">
        </td>
        <td>
            <input type="checkbox">
        </td>
        <td>
            <input type="checkbox">
        </td>
        <td>
            <input type="checkbox">
        </td>
        <tr class="last-checkbox">
            <td colspan="5" align="right">
                <input type="checkbox">
            </td>
        </tr>
    </tr>
</table>
<table border="1" id="second-table">
    <tr>
        <td>Manage Setting</td>
        <td>(View Action)</td>
        <td>(Add Action)</td>
        <td>(Update Action)</td>
        <td>(Delete Action)</td>
    </tr>
    <tr class="checkboxes">
        <td>1. Manage Setting</td>
        <td>
            <input type="checkbox" checked>
        </td>
        <td>
            <input type="checkbox" checked>
        </td>
        <td>
            <input type="checkbox" checked>
        </td>
        <td>
            <input type="checkbox" checked>
        </td>
        <tr class="last-checkbox">
            <td colspan="5" align="right">
                <i>I have to make this checkbox checked when all of the elements are checked</i><input type="checkbox" id="MYID" checked>
            </td>
        </tr>
    </tr>
</table>
            
            More and More tables.......