当一个顶级复选框被选中时,如何禁用顶级父复选框?
基本上,我希望顶级复选框的行为类似于单选按钮,而子项的行为类似于普通复选框。
在这种情况下,我无法将顶级复选框换成单选按钮。
目前,我的实现禁用所有复选框,无论是否选中了父框或子框。
$('li > label > input[type="checkbox"]').click(function () {
var parent_id = $(this).parent().parent("[data-id]").data("id");
// problem area
if (this.checked) {
$("input:checkbox").each(function () {
$(this).prop("checked", false);
});
$(this).prop("checked", true);
}
$('li > label > input[type="checkbox"]').each(function () {
if ($(this).is(":checked")) {
$(this).parent().parent().find("ul.children").show();
} else {
$(this).parent().parent().find("ul.children").hide();
uncheckChildren(parent_id);
}
});
});
function uncheckChildren(parent_id) {
$('[data-id="' + parent_id + '"]')
.find("ul.children li label input")
.prop("checked", false);
}
<div class="categorychecklist-holder">
<ul class="acf-checkbox-list acf-bl">
<li data-id="10">
<label>
<input type="checkbox" name="acf[field_611a82974b81d][]" value="10">
<span>Dine</span></label>
<ul class="children acf-bl" style="display: none;">
<li data-id="371">
<label>
<input type="checkbox" name="acf[field_611a82974b81d][]" value="371">
<span>Brunch</span></label>
</li>
<li data-id="370">
<label>
<input type="checkbox" name="acf[field_611a82974b81d][]" value="370">
<span>Casual</span></label>
</li>
</ul>
</li>
<li data-id="7">
<label>
<input type="checkbox" name="acf[field_611a82974b81d][]" value="7">
<span>Do</span></label>
<ul class="children acf-bl" style="display: none;">
<li data-id="372">
<label>
<input type="checkbox" name="acf[field_611a82974b81d][]" value="372">
<span>Gallery</span></label>
</li>
<li data-id="373">
<label>
<input type="checkbox" name="acf[field_611a82974b81d][]" value="373">
<span>Museum</span></label>
</li>
</ul>
</li>
<li data-id="6">
<label>
<input type="checkbox" name="acf[field_611a82974b81d][]" value="6">
<span>Shop</span></label>
</li>
<li data-id="13">
<label>
<input type="checkbox" name="acf[field_611a82974b81d][]" value="13">
<span>Stay</span></label>
</li>
</ul>
</div>
ul.children {
display: none;
}