如果选中目标复选框的兄弟姐妹之一,我如何不取消选中父复选框?
下面是我从这个答案修改的代码。
$(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);
}
});