ターゲットチェックボックスの兄弟の1つがチェックされている場合、親のチェックボックスのチェックを外さないようにするにはどうすればよいですか?
以下は、この回答から変更したコードです。
$(document).ready(function() {
$('input.liChild').change(function() {
if ($(this).is(':checked')) {
$(this).parents('ul').siblings('input:checkbox').attr('checked', true);
}
else
{
if($(this).parents('ul').siblings('input:checkbox').not(':checked'))
$(this).parents('ul').siblings('input:checkbox').attr('checked', false);
}
});
});
アイデアは、ターゲットのチェックボックスがどれほど深くても、すべての親のチェックボックスをチェックすることです。次に、ターゲットのチェックボックスがオフになっている場合は、すべての親のチェックボックスを再度オフにします。
私の問題は、ターゲットのチェックボックスの兄弟がチェックされている場合、親のチェックボックスのチェックを外したくないということです。
これが私のjsfiddleです。
編集:
私は自分の解決策を考え出しました、助けてくれてありがとう。
$('input.liChild').change(function() {
if ($(this).is(':checked')) {
$(this).parents('ul').siblings('input:checkbox').attr('checked', true);
//alert($(this).parents().siblings().find('input:checkbox:checked').length);
//$(this).parents().siblings().css({background:'red'});
//$(this).parent().children().css({background:'red'});
}
else
{
$(this).parent().children().find('input:checkbox:checked').attr('checked', false);
if($(this).parents().siblings().find('input:checkbox:checked').length == 0)
$(this).parents('ul').siblings('input:checkbox').attr('checked', false);
}
});