zTree的如何只获得完全选中的checkbox

本文探讨了在异步加载环境下,如何通过过滤半选节点来精确获取已选中的Checkbox节点,以避免查询数据库时出现数据重复的问题。

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

如图,用getCheckedNodes()方法连“八三西里”也返回,如何只返回完全选中的checkbox?

 

张金富
张金富 回答于 2011-08-14 22:07 (9个月前)
引用来自“dyhunter”的答案

关于半选节点,在3.0中能提供简单判断的方法,2.6只好你自己判断了,treeNode.checked=true && treeNode.check_True_Full = false 就是半选节点,你可以在 getCheckedNodes方法得到的结果中自行过滤一下,就可以了;

补充一下,在百度空间上你问的问题和你这个还不完全一样,至少详细程度不一样,看你这个需求,你应该是希望将打钩的、且没有加载子节点的父节点获取下来,那么只需要看看 getCheckedNodes方法中的节点 treeNode.isParent == true && (!treeNode.nodes || treeNode.nodes.length==0) 满足这种的都是父节点且未加载过子节点的。

如果还有问题就继续沟通吧

可能是我没有描述清楚,我觉得这个问题具有普遍意义,有必要详细描述一下,可能对您有意义。 
公司的项目分为小区、楼宇、单元、用户四个级别。图片中的“迎秋里”、“八三西里”都是小区名。项目实际上只需要获得用户节点,但是一次加载在IE6下性能太低,所以改用异步加载。 
1、只有异步加载才存在这种问题 
2、考虑一下用户情况,比如现在只展开小区级别的节点,然后用户选中“八三西里”,意思是选中“八三西里”所有的用户,然后执行查询。现在并没有展开“八三西里”节点,数据为空,那么我在获得节点后就需要根据节点层次(小区)查询相应的数据库表。这是必需的。 
3、然后问题出来了,getCheckedNodes方法返回的节点包含半选的节点。那么我在得到选中的节点后再查询一遍数据库就会包含未选中的节点数据。以本图为例,一号楼并未选中,可是“八三西里”选中了,那么就会查询“八三西里”所有的用户。
4、存在数据重复问题,但是不影响正常使用。
<!DOCTYPE html> <HTML> <HEAD> <TITLE> ZTREE DEMO - checkbox</TITLE> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <link rel="stylesheet" href="zTreeStyle.css" type="text/css"> <script type="text/javascript" src="jquery-1.4.4.min.js"></script> <script type="text/javascript" src="jquery.ztree.core.js"></script> <script type="text/javascript" src="jquery.ztree.excheck.js"></script> <SCRIPT type="text/javascript"> var setting = {check: {enable: true},data: {simpleData: {enable: true}}}; var zNodes =[ { id:1, pId:0, name:"", open:true}, { id:11, pId:1, name:"报表", open:true}, { id:111, pId:11, name:"报表管理",open:true}, { id:112, pId:11, name:"报表概况",open:true}, { id:12, pId:1, name:"我的", open:true}, { id:121, pId:12, name:"修改密码",open:true}, { id:122, pId:12, name:"意见反馈",open:true} ]; $(document).ready(function(){ $.fn.zTree.init($("#treeDemo"), setting, zNodes); var zTree = $.fn.zTree.getZTreeObj("treeDemo"), type = { "Y":'ps', "N":'ps'}; zTree.setting.check.chkboxType = type; }); function aa(){ var treeObj=$.fn.zTree.getZTreeObj("treeDemo"); nodes=treeObj.getCheckedNodes(true); var nodes1 = treeObj.getNodes(); var aa1= treeObj.transformToArray(nodes1); for(var i=0; i < aa1.length;i++){ var node = treeObj.getNodeByParam("id",aa1[i].id ); treeObj.checkNode(node,true,true); treeObj.updateNode(node); } } </SCRIPT> </HEAD> <BODY> <div class="content_wrap"> <div class="zTreeDemoBackground left"> <ul id="treeDemo" class="ztree"></ul> </div> <button value="dianji" onclick="aa()" /> </div> </BODY> </HTML>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值