ztree刷新(重置)整棵树,并且刷新完之后选中刷新之前的节点,展开之前展开的节点

ztree刷新(重置)整棵树,并且刷新完之后选中刷新之前的节点,展开之前展开的节点

首先说一件脑壳很疼的事情,就是在项目中用到了很多ztree,这块是我最头疼的,因为测试每天提的bug都是这块问题的,说来说去,就是一句话,做这些操作的时候只要刷新一下(或重新加载一下这颗树)就好了。

那么重点来了,怎样才能做到在操作节点的时候刷新这颗树呢,我尝试了很多次都不能成功,最后,终于解决了。。。。。。内心那是无比的开心呀。。。

刷新操作的时候,首先要重置这些树,并且获取到刷新之前选中的节点,刷新之后让其继续选中刷新之前选中的节点,并且展开刷新之前展开的节点。。。。好了,话不多说,上代码

// 我自己封装了一个函数,哪边用到哪边调用就好了

function refresh(){

// 获取整棵树上所有的节点

var zNodes = getPolicyList();

if (zNodes.length > 0) {

var treeObj = $.fn.zTree.getZTreeObj("policyTree");

// 获取刷新之前选中的节点

var nodes = treeObj.getSelectedNodes();

var selectId = nodes[0].id;

// 重置树

$.fn.zTree.init($("#policyTree"), policyTreeSetting, zNodes);

// 刷新之后默认选中刷新之前的节点

var node = treeObj.getNodeByParam("id", selectId);

treeObj.selectNode(node, true);

// 刷新之后默认展开刷新之前展开的节点

var cookie = $.cookie("z_tree" + window.location);

if (cookie) {

z_tree = JSON.parse(cookie);

for (var i = 0; i < z_tree.length; i++) {

var node = treeObj.getNodeByParam('id', z_tree[i]);

treeObj.expandNode(node, true, false);

}

}

}

}

注意:此处需要用到jquery.cookie.js,导入这个js,默认展开的才会展开

除此之外,还需要用到两个函数,在ztree的callback中写,相信用过ztree的人都懂

callback:{

onExpand: onExpand,//刷新时展开节点

onCollapse: onCollapse//刷新时关闭节点

}

/**

* 刷新节点后默认打开原来的位置

* @param event

* @param treeId

* @param treeNode

*/

function onExpand(event, treeId, treeNode) {

var cookie = $.cookie("z_tree" + window.location);

var z_tree = new Array();

if (cookie) {

z_tree = JSON.parse(cookie);

}

if ($.inArray(treeNode.id, z_tree) < 0) {

z_tree.push(treeNode.id);

}

$.cookie("z_tree" + window.location, JSON.stringify(z_tree))

}

/**

* 刷新节点后关闭节点的位置

* @param event

* @param treeId

* @param treeNode

*/

function onCollapse(event, treeId, treeNode) {

var cookie = $.cookie("z_tree" + window.location);

var z_tree = new Array();

if (cookie) {

z_tree = JSON.parse(cookie);

}

var index = $.inArray(treeNode.id, z_tree);

z_tree.splice(index, 1);

for (var i = 0; i < treeNode.children.length; i++) {

index = $.inArray(treeNode.children[i].id, z_tree);

if (index > -1) z_tree.splice(index, 1);

}

$.cookie("z_tree" + window.location, JSON.stringify(z_tree))

}

好吧,一个完完整整的关于ztree刷新整棵树,刷新完之后选中之前选中的节点,展开之前展开的节点就这样实现了!

相关文章

成吉思汗手机版好玩吗成吉思汗手机版评测详解
beat365体育ios版下载

成吉思汗手机版好玩吗成吉思汗手机版评测详解

🕒 07-30 👁️ 3394
钉钉各个版本
beat365体育ios版下载

钉钉各个版本

🕒 07-09 👁️ 679
好玩的手机游戏下载
bas365

好玩的手机游戏下载

🕒 07-10 👁️ 7359
苔笺是什么意思?苔笺的解释是什么?苔笺拼音怎么读
beat365体育ios版下载

苔笺是什么意思?苔笺的解释是什么?苔笺拼音怎么读

🕒 07-23 👁️ 5482
怎样制作生日贺卡?简单步骤与方法
国内365bet登录网址

怎样制作生日贺卡?简单步骤与方法

🕒 07-16 👁️ 5507
中药师教您做香袋
国内365bet登录网址

中药师教您做香袋

🕒 08-08 👁️ 1618
Win7如何设置不待机?Win7设置不待机不休眠教程
beat365体育ios版下载

Win7如何设置不待机?Win7设置不待机不休眠教程

🕒 08-06 👁️ 4376
如何阻隔房屋噪音以免影響生活?好鄰居零噪音讓你晚上安心休息!
坪山淡水河探钓见闻
国内365bet登录网址

坪山淡水河探钓见闻

🕒 07-07 👁️ 6837