爱程序网

zTree的getChangeCheckedNodes()使用心得

来源: 阅读:

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

关于爱程序网 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助