关于Dwz的tree全选子节点后,根节点没有选中的解决方案

本文解决了在使用dwz.tree.js时,手动选择所有子节点后根节点复选框状态不同步的问题。通过修改源码,在子节点全选时同步更新父节点的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在写demo的时候,突然发觉一个问题,问题描述如下:

在手动一个一个选中子节点的情况下,状态为全选,根节点的复选框是选中的,但是出现一个问题,循环遍历的时候,只

能找到选中的子节点,而选中的根节点复选框状态还是false,我仔细看了一下源码,做了如下修改:

在dwz.tree.js文件中:

_checkParent: function () {
             if ($(this).parent().hasClass("tree")) return;
             var parent = $(this).parent().parent();
             var stree = $(">ul", parent);
             var ckbox = stree.find(">li>a").size() + stree.find("div.ckbox").size();
             var ckboxed = stree.find("div.checked").size();
             var aClass = (ckboxed == ckbox ? "checked" : (ckboxed != 0 ? "indeterminate" : "unchecked"));
             var rClass = (ckboxed == ckbox ? "indeterminate" : (ckboxed != 0 ? "checked" : "indeterminate"));
             $(">div>.ckbox", parent).removeClass("unchecked").removeClass("checked").removeClass(rClass).addClass(aClass);
             //新增语句,全选子节点状态也选中父节点
             if (aClass == 'checked') {
                 $(">div>.ckbox", parent).find("input").attr('checked', true);
             }
             //华丽的分割线
             parent._checkParent();
         }

加上红色的代码就可以了...

转载于:https://my.oschina.net/garychen/blog/108733

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值