【发布时间】:2019-03-18 22:13:30
【问题描述】:
我有一个 WooCommerce 在线商店,我正在尝试让用户正确选择类别。
这个想法是,如果他们选择一个类别子类别,那么父类别也会被选择。
我已经这样做了,但是当取消选中子类别(并且没有检查输入)时,父级仍然处于选中状态。
$('ul.product_cat_list').find('input[type=checkbox]').each(function(index, input) {
$(input).bind('change', function() {
var checkbox = $(this);
var is_checked = $(checkbox).is(':checked');
if(is_checked) {
$(checkbox).parents('li').children('input').attr('checked', 'checked');
} else {
$(checkbox).parentsUntil('ul').find('input').removeAttr('checked');
}
});
});
这里是Fiddle
【问题讨论】:
-
尝试使用
.prop('checked', true);和.prop('checked', false);。checked是与属性相反的属性。 -
这些场景很快变得复杂。您还需要考虑兄弟姐妹的检查状态。并且应该选中/取消选中父级选中/取消选中所有子级?
-
您错过了将标题和复选框都包含在该标签中的绝佳机会。
-
@j08691 会考虑兄弟姐妹。选中/取消选中父级 选中/取消选中所有子级 no 是必要的。