如果未选中一个“子”TD,则取消选中分组TD

时间:2014-12-04 16:24:12

标签: jquery html

enter image description here

根据上面的图片,如果用户取消选中复选框#2,我也试图取消选中复选框#1。目前,当我取消选中复选框#2时,我的代码将取消选中#1和#3。

HTML代码(已清理和简化)

<!--Grouping Row 1-->
<tr id="group-id-example_insertjobname">
<td colspan="11" data-group="-b-insertjobname" data-group-level="0">
<input type="checkbox" class="check" name="" value="">
</td>
</tr>
<!--Grouping Row 1-->

<tr role="row" class="odd group-item" data-group="-b-XXX">
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td class="pay">
<input type="checkbox" name="PI0" class="Invoice Open" value="">
</td>
</tr>

<tr role="row" class="group-item" data-group="-b-XXX">
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td class="pay">
<input type="checkbox" name="PI1" class="Invoice Open" value="">
</td>
</tr>

<!--Grouping Row 2-->
<tr id="group-id-example_insertjobname">
<td colspan="11" data-group="-b-insertjobname" data-group-level="0">
<input type="checkbox" class="check" name="" value="">
</td>
</tr>
<!--Grouping Row 2-->

<tr role="row" class="odd group-item" data-group="-b-XXX">
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td class="pay">
<input type="checkbox" name="PI3" class="Invoice Open" value="">
</td>
</tr>

<tr role="row" class="group-item" data-group="-b-XXX">
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td class="pay">
<input type="checkbox" name="PI4" class="Invoice Open" value="">
</td>
</tr>

Jquery功能

$(function() {
    $('.pay input[type="checkbox"]').on('change', function() {
        if ($('this:checkbox:not(:checked)')) {
            $('.check').prop('checked', false);
        }
    });
});

2 个答案:

答案 0 :(得分:1)

这应该适合你:

$(function() {
    $('.pay input[type="checkbox"]').on('change', function() {        
        if (!$(this).prop('checked')) {
            $(this).parent().parent().prevAll('tr').not('.group-item').first().find('.check').prop('checked', false);
        }
    });
});

由于$('.pay input[type="checkbox"]')不是$('.check')的孩子,您需要使用parent().parent()与其他tr元素达到同一级别,{{1}要获取所有以前的分组prevAll('tr').not('.group-item')元素,获取第一个tr元素,然后您必须找到first()的输入,该输入应该是您正在寻找的输入。

答案 1 :(得分:0)

尝试

$(this).prevAll().find('.check').prop('checked', false);