jQuery单击一个复选框应选中一行中的所有复选框

Shibbir

我正在尝试选中一行中的所有复选框(tr)这样我就使用一个查询代码来做到这一点。但是选中了2行的复选框。

但是应该这样选择:

如果我选择了MON它,则选中它下面的所有复选框。如果我选择了TUE它,则应选中它下面的所有复选框,但现在它是全选的。

  <tr>
    <td><input type="checkbox" name="mon_morning" value="mon_morning" id="checkAll"/>&nbsp;<strong>MON</strong></td>
    <td><input type="checkbox" name="mon_morning" value="mon_morning" class="checkItem"/>&nbsp; Morning</td>
    <td><input type="checkbox" name="mon_afternoon" value="mon_morning" class="checkItem"/>&nbsp; Afternoon</td>
    <td><input type="checkbox" name="mon_evening" value="mon_evening" class="checkItem"/>&nbsp; Evening</td>
  </tr>
  <tr>
    <td><input type="checkbox" name="mon_morning" value="mon_morning" id="checkAll_1"/>&nbsp;<strong>TUE</strong></td>
    <td><input type="checkbox" name="tue_morning" value="tue_morning" class="checkItem_1"/>&nbsp; Morning</td>
    <td><input type="checkbox" name="tue_afternoon" value="tue_morning" class="checkItem_1"/>&nbsp; Afternoon</td>
    <td><input type="checkbox" name="tue_evening" value="tue_evening" class="checkItem_1"/>&nbsp; Evening</td>
  </tr>

<script>
$('#checkAll, #checkAll_1').click(function () {    
    $(':checkbox.checkItem').prop('checked', this.checked);    
    $(':checkbox.checkItem_1').prop('checked', this.checked);    
 });
</script>

对不起,我的英语不好:(

大卫说恢复莫妮卡

我的第一个想法是:

$('td:first-child input[type="checkbox"]').on('change', function(){
    $(this)
    .closest('td')
    .siblings()
    .find('input[type="checkbox"]').prop('checked', this.checked);
});

JS小提琴演示

进行了修订,以考虑到<input>元素的类名(我最初错过了):

$('td:first-child input[type="checkbox"]').on('change', function(){
    $(this)
    .closest('tr')
    .find('.checkItem').prop('checked', this.checked);
});

JS小提琴演示

更新为具有自动全部选中/取消选中功能(如果中的其他<input>元素处于<tr>选中/取消选中状态):

$('tr input[type="checkbox"]').on('change', function () {
    var cell = $(this).closest('td'),
        row = cell.parent(),
        checkItems = row.find('.checkItem');
    if (cell.is(':first-child')) {
        checkItems.prop('checked', this.checked);
    } else {
        row.find('td:first-child input')
            .prop('checked', checkItems.length === checkItems.filter(':checked').length);
    }
});

JS小提琴演示

参考:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

jQuery的每个复选框行仅选中一个复选框

选中一个复选框将关闭HTML / CSS中的所有其他复选框

如何在Vuetify中选中一个复选框时选中所有复选框?

取消选中一个复选框时如何取消选中以下所有复选框

Tkinter问题:选中一个复选框将选中所有复选框

即使选中一个复选框,所有复选框也会被选中

禁用表的同一列中的所有复选框,而无需选中一个jQuery

取消选中一个复选框后如何启用所有复选框?使用JavaScript

如何在Angular 7中验证多个复选框?它应该引发一条消息,即至少应选中一个复选框

如何验证至少应选中一个复选框?

在按钮上单击同一行复选框应选中

如何单击一个复选框,单击所有复选框 VBA

选中一个具有相同ID的所有复选框的Javascript

单击文本以选中一个表列中的复选框

Javascript / jQuery-如何在单击一个复选框时取消选中所有其他复选框

如何仅从组复选框中的另一个复选框中选中所有其他复选框

如果选中了包含多个复选框的div中的一个复选框,则将类添加到所有复选框

要求选中一个复选框

用dalekjs选中一个复选框

仅选中一个复选框

如何双击以选中一个复选框?

从复选框数组中选中一个

当通过jQuery单击一个复选框时,如何选择所有复选框并取消选择?

选中所有复选框后取消选中复选框时删除一行

DataTable中的每一行都有复选框。如何在选中新复选框时取消选中上一个复选框

如何单击一个弹出窗口并选中该复选框的复选框

通过选中/取消选中一个复选框来选中/取消选中多个复选框

在Flutter中,选中一个复选框-> Disabled复选框,并且应该在复选框中启用文本字段

如果选中一个复选框,如何取消选中另一个复选框?