0

当我检查其他复选框时,我想自动选择复选框。

这是我正在使用但不起作用的代码:

<table class='block'>
<tr>
<td>
<input class='cb1' type='checkbox'><label>Checkbox 1</label>
</td>
<td>
<input class='cb2' type='checkbox'><label>Checkbox 2</label>
</td>
<td>
<input class='cb2' type='checkbox'><label>Checkbox 2</label>
</td>
</tr>
</table>

<table class='block'>
<tr>
<td>
<input class='cb1' type='checkbox'><label>Checkbox 1</label>
</td>
<td>
<input class='cb2' type='checkbox'><label>Checkbox 2</label>
</td>
<td>
<input class='cb2' type='checkbox'><label>Checkbox 2</label>
</td>
</tr>
</table>

<script type='text/javascript'>
$(document).ready(function(){
    $('.block .cb1').click(function(){
        if($(this).is(':checked'))
            {

                $(this).parent().find('.cb2').attr('checked','checked');
            }
        else
            {
                $(this).parent().find('.cb2').removeAttr('checked');
            }
    });
});
</script>

我试图让它只从检查“cb1”的同一张表中检查“cb2”。

4

3 回答 3

1

您需要替换parent()closest('table')(或closest('tr'),对于显示的 HTML)调用。看,复选框元素的直接父元素是<td>元素 - 显然不包含任何其他复选框。您需要进一步向上 DOM 查找具有所有其他复选框作为后代的元素。

于 2012-12-20T11:02:52.773 回答
0

您的代码正在搜索带有类的元素,因为cb2<td>的选择器是.parent().. 它必须通过第 3 个父级才能到达该<table>元素..

所以使用parents()eq()

$(this).parents().eq(3).find('.cb2').attr('checked','checked');

*OR*

$(this).parents().eq(2).find('.cb2').attr('checked','checked'); // since all your checkbox is under <tr>

这是小提琴..

http://jsfiddle.net/MKSgf/

于 2012-12-20T11:09:40.750 回答
-1

试试这个代码,因为你在 parent() 中选择了 td 而不是 tr

(this).parent().parent().find('.cb2').attr('checked','checked');

如果你想选择第一个 cb2 复选框试试这个

 $(this).parent().parent().find('.cb2').first().attr('checked','checked');

演示

于 2012-12-20T11:03:32.980 回答