gpt4 book ai didi

javascript - 如果未选中所有子项,则取消选中父项复选框

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:30:42 25 4
gpt4 key购买 nike

我创建了一个复选框组,但未能实现要求。

如果组内的所有复选框都未选中,则顶级复选框应显示为未选中状态。

我正在以与我为所有选中的复选框所做的相同的方式进行操作。我的第三个 else if 语句不起作用。

我正在尝试满足三个要求:

  1. 如果筛选分组中的复选框未全部选中,则顶级过滤器在复选框中显示 (-)。

  2. 如果筛选分组中的所有复选框都被选中,则顶级过滤器显示带有复选标记的选定状态。

  3. 如果组内的所有复选框都未选中,则顶级复选框应显示为未选中状态。

我未能实现最后的声明。

JS:

 <script>
$(".faceted-filters").on("click", "#checkAll", function(){

$(this).parents(".top-lvl-filter").next(".sub-lvl-filter").find("input[type=checkbox]").prop('checked', $(this).prop('checked'));
$(this).removeClass("partially-checked");

});

$("#collapse-one input").change(function(){
var a = $("#collapse-one input");
if(a.length !== a.filter(":checked").length){
$(this).parents(".sub-lvl-filter").prev().find("input").addClass("partially-checked");
}
else if(a.length == a.filter(":checked").length){
$(this).parents(".sub-lvl-filter").prev().find("input").attr('checked','checked');
$(this).closest(".composite-filter").find(".top-lvl-filter input").removeClass("partially-checked");
}
else if(a.length == a.filter.not(":checked").length){
$(this).closest(".composite-filter").find(".top-lvl-filter input").removeClass("partially-checked");
}


});
</script>

工作示例:http://codepen.io/anon/pen/PqjJdO

最佳答案

以下更改将解决您的问题,

$("#collapse-one input").change(function(){
var a = $("#collapse-one input");
if(a.length > a.filter(":checked").length && a.filter(":checked").length > 0){

$(this).parents(".sub-lvl-filter").prev().find("input").addClass("partially-checked");
}
else if(a.length == a.filter(":checked").length){
$(this).parents(".sub-lvl-filter").prev().find("input").prop('checked','checked');
$(this).closest(".composite-filter").find(".top-lvl-filter input").removeClass("partially-checked");
}
else if(a.filter(":checked").length < 1){

$(this).closest(".composite-filter").find(".top-lvl-filter input").removeClass("partially-checked");
$(this).closest(".composite-filter").find(".top-lvl-filter input").prop('checked','');
}


});

关于javascript - 如果未选中所有子项,则取消选中父项复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30782224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com