我用列表中的div做这个是因为我使用的模板需要那个类的复选框。我使用了父函数。这是我遇到的第三个问题。是因为我使用的div吗?如果最后一个孩子被选中,也要选中父复选框。请提供帮助
$('input[type=checkbox]').click(function() {
if (this.checked) {
$(this).parents().parents().children('input[type=checkbox]').prop('checked', true);
$(this).parent().parent().parent().parent().children('div').first('div').children('input[type=checkbox]').attr('checked', true);
}
$(this).parent().parent().find('input[type=checkbox]').prop('checked', this.checked);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="col-sm-offset-2 col-sm-10">
<ul class="list-unstyled">
<li>
<div class="checkbox">
<input id="1" type="checkbox" class="checkbox">
<label for="1">Dashboard</label>
</div>
</li>
<li class="has_sub">
<div class="checkbox">
<input id="4" type="checkbox" class="parent">
<label for="4">Customer</label>
</div>
<ul class="list-unstyled">
<li>
<div class="checkbox" style="margin-left: 25px;">
<input id="4.11" type="checkbox" class="child1Gen">
<label for="4.11">Customer List</label>
</div>
</li>
<li>
<div class="checkbox" style="margin-left: 25px;">
<input id="4.12" type="checkbox" class="child1Gen">
<label for="4.12">Add Customer</label>
</div>
</li>
</ul>
</li>
<li class="has_sub">
<div class="checkbox">
<input id="5" type="checkbox" class="parent">
<label for="5">Example</label>
</div>
<ul class="list-unstyled">
<li>
<div class="checkbox" style="margin-left: 25px;">
<input id="5.1" type="checkbox" class="child1Gen">
<label for="5.1">Example1</label>
</div>
</li>
<li>
<div class="checkbox" style="margin-left: 25px;">
<input id="5.4" type="checkbox" class="child1Gen">
<label for="5.4">Example2</label>
</div>
</li>
<li class="has_sub">
<div class="checkbox" style="margin-left: 25px;">
<input id="5.5" type="checkbox" class="child1Gen">
<label for="5.5">Example3</label>
</div>
<ul class="list-unstyled">
<li>
<div class="checkbox" style="margin-left: 50px;">
<input id="5.5.1" type="checkbox" class="child2Gen">
<label for="5.5.1">Example3Sub1</label>
</div>
</li>
<li>
<div class="checkbox" style="margin-left: 50px;">
<input id="5.5.2" type="checkbox" class="child2Gen">
<label for="5.5.2">Example3Sub2</label>
</div>
</li>
<li>
<div class="checkbox" style="margin-left: 50px;">
<input id="5.5.3" type="checkbox" class="child2Gen">
<label for="5.5.3">Example3Sub3</label>
</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
尝试change事件 演示
$('input[type=checkbox]').change(function() {
// For child cb
let $this = $(this)
$this.parents('li:first').find('ul input[type=checkbox]').prop('checked', this.checked)
// For parent cb
let $siblings = $this.parents('ul:first').children('li')
let $checked = $siblings.find('input[type=checkbox]:checked')
let $checkbox = $siblings.find('input[type=checkbox]')
$this.parents('ul:first').siblings('div.checkbox').find('input[type=checkbox]').prop('checked', $checked.length === $checkbox.length)
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="col-sm-offset-2 col-sm-10">
<ul class="list-unstyled">
<li>
<div class="checkbox">
<input id="1" type="checkbox" class="checkbox">
<label for="1">Dashboard</label>
</div>
</li>
<li class="has_sub">
<div class="checkbox">
<input id="4" type="checkbox" class="parent">
<label for="4">Customer</label>
</div>
<ul class="list-unstyled">
<li>
<div class="checkbox" style="margin-left: 25px;">
<input id="4.11" type="checkbox" class="child1Gen">
<label for="4.11">Customer List</label>
</div>
</li>
<li>
<div class="checkbox" style="margin-left: 25px;">
<input id="4.12" type="checkbox" class="child1Gen">
<label for="4.12">Add Customer</label>
</div>
</li>
</ul>
</li>
<li class="has_sub">
<div class="checkbox">
<input id="5" type="checkbox" class="parent">
<label for="5">Example</label>
</div>
<ul class="list-unstyled">
<li>
<div class="checkbox" style="margin-left: 25px;">
<input id="5.1" type="checkbox" class="child1Gen">
<label for="5.1">Example1</label>
</div>
</li>
<li>
<div class="checkbox" style="margin-left: 25px;">
<input id="5.4" type="checkbox" class="child1Gen">
<label for="5.4">Example2</label>
</div>
</li>
<li class="has_sub">
<div class="checkbox" style="margin-left: 25px;">
<input id="5.5" type="checkbox" class="child1Gen">
<label for="5.5">Example3</label>
</div>
<ul class="list-unstyled">
<li>
<div class="checkbox" style="margin-left: 50px;">
<input id="5.5.1" type="checkbox" class="child2Gen">
<label for="5.5.1">Example3Sub1</label>
</div>
</li>
<li>
<div class="checkbox" style="margin-left: 50px;">
<input id="5.5.2" type="checkbox" class="child2Gen">
<label for="5.5.2">Example3Sub2</label>
</div>
</li>
<li>
<div class="checkbox" style="margin-left: 50px;">
<input id="5.5.3" type="checkbox" class="child2Gen">
<label for="5.5.3">Example3Sub3</label>
</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
对于中间复选框 https://stackoverflow.com/a/56600257/8053274
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。