zTree的getChangeCheckedNodes()方法用于获取输入框勾选状态被改变的节点集合。如果需要获取每次操作后全部被改变勾选状态的节点数据,请在每次勾选操作后,遍历所有被改变勾选状态的节点数据,让其 checkedOld = checked 就可以了。
问题一:checkedOld是什么?
仔细查看api会发现“treeNode 节点数据详解”模块有一个叫作checkedOld的excheck扩展属性,表示节点的 checkBox / radio 在初始化时的勾选状态。[setting.check.enable = true & treeNode.nocheck = false 时有效],也就是说每一个节点都有一个chekcedOld属性。就像name属性一样。
问题二:如何为checkedOld赋值?1、zTree 初始化节点数据时会对此属性进行赋值,因此请勿对此属性初始化(默认值:checked的初始化值)这说明初始化的时候var zNodes = [{name:"test",checkedOld:true}];如此赋值是无效的。如果想要checkedOld为true,应该通过设置checked值来实现,比如var zNodes = [{name:"test",checked:true}];2、如需配合 zTreeObj.getChangeCheckedNodes 方法实现特殊功能,可以根据需求在使用中自行修改 checkedOld 数据比如设置当前勾选状态为参照标准,可通过如下JS实现var zTree = $.fn.zTree.getZTreeObj("treeDemo"),nodes = zTree.getChangeCheckedNodes();for (var i=0, l=nodes.length; i<l; i++) { nodes[i].checkedOld = nodes[i].checked;}以上JS所完成的工作,就是删选出“初始化勾选状态”和当前的节点勾选状态不一致的节点,并使其变为一致。
问题三:获取getChangeCheckedNodes()节点,哪些是未勾选变为勾选的?哪些是由勾选状态变为未勾选状态的?只要明白一个问题,通过getChangeCheckedNodes()方法获取的节点,其实就是checkedOld属性值和checked属性值不一致的节点,所以只要遍历一遍获取的节点集合,通过nodes[i].checked(或者nodes[i].checkedOld)的值辨别即可。
引用zTree中文APIhttp://tool.oschina.net/apidocs/apidoc?api=ztree3.2%2Fapi%2FAPI_cn.html