我的HTML结构与SO上类似的其他问题相当不同。我想在选中所有子复选框时选中父复选框。我有一个JSFiddle,在其中添加了我相当长的HTML代码。我在Jquery中做错了什么?这是我的jquery:
$('li :checkbox').on('click', function() {
var $chk = $(this),
$container = $chk.closest('td,li');
if (!$container.hasClass('list-group-item')) {
$container.find(':checkbox').not(this).prop('checked', this.checked)
}
do{
$ul = $container.parent();
$parent = $ul.siblings(':checkbox');
if($chk.is(':checked')){
$parent.prop('checked', $ul.has(':checkbox:not(:checked)').length == 0)
} else {
$parent.prop('checked', false)
}
$chk = $parent;
$container = $chk.closest('td,li');
} while($ul.is(':not(.someclass)'));
});
PS:HTML结构下半部分的父/子关系由于一些未闭合的标签而不能很好地工作。但是前几个父/子关系是工作的
2条答案
按热度按时间wpx232ag1#
下面的例子应该能帮助你理解并给你一个方法来完成你想要的。
您应该做的是给每个子类别一个ID,它可以用来迭代子类别,这样只有那些复选框可以被选中,而不是所有的。
这只是一个示例,您可以尝试将其合并到代码中。
看了你的评论后,我很快想出了这个函数,应该会有所帮助:
检查实时示例中的控制台以获取更新版本。
JSFiddle
JSFiddle (Update 1)
children
firstElementChild
wgeznvg72#
因为我没有找到任何其他地方的方法,我尝试了@Script47的例子试错,并得到了它的工作: