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()されている HTML の場合は ) 呼び出しに置き換える必要があります。チェックボックス要素の直接の親は要素であり、明らかに他のチェックボックスを含んでいません。DOM をさらに上に移動して、他のすべてのチェックボックスを子孫として持つ要素を見つける必要があります。closest('table')closest('tr')<td>

于 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() が tr ではなく td を選択するため、このコードを試してください。

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

最初のcb2チェックボックスを選択したい場合は、これを試してください

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

デモ

于 2012-12-20T11:03:32.980 に答える