ztree的反选

工作也有一年半了,还记得刚开始做事情的时候是写前端,然而自己刚入职的时候连htmljavaScript是什么都不知道的菜鸟(如今依然是菜鸟)。那是后续让我做ztree相关的东西,最复杂的是更新的时候要反选树的节点。那时候想了好多办法,也不太记得清怎么解决的了。可能是缘分??最近有遇到了ztree的东西,就研究了下ztree的反选。

其实现在ztree中提供了方法很容易就反选节点。最主要用到的是zTreeObjtransformToArrayupdateNode这两个方法,第一个用于将树节点变为一个数组,不需要你自己循环来做,第二个是更新节点,我们将被选中的节点的checked状态设置为tree,然后更新节点状态,那么该节点就会被显示为选中状态。
下面是代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
  	var zTree_Menu = $.fn.zTree.init($("#menuTree"), a, datas); //ztree对象
var checked = [ 1, 7 ];//需要选中的节点
var allNodes = zTree_Menu.getNodes();//获取所有节点
var nodes = zTree_Menu.transformToArray(allNodes); //转变为数组
$.each(nodes, function( index,node) {
$.each(checked, function(i, data) {
if (node.id == data) {
node.checked = true; //设为选中
zTree_Menu.updateNode(node);//更新状态
}
});
});
zTree_Menu.expandAll(true);//展开整棵树

这样需要选中的节点就被选中了,但是该方法只适合于一次展示所有的节点的树,而不是用于异步加载的树。