前端——ztree树在刷新页面之后保持原来的展开状态

简介: 前端——ztree树在刷新页面之后保持原来的展开状态

一、需要达到的效果

如下图所示,父节点1和父节点3现在的状态是展开的,其它父节点的状态是合并的;

现在的要求是,刷新页面之后,保持这样的状态:


二、解决

step1 添加插件

在JSP或者HTML上面添加插件,包括jquery.js、jquery.ztree.js、jquery.cookie.js

重点说一下jquery.cookie.js,这个插件主要是记录当前的状态;

等到刷新页面之后,就可以直接从cookie里面获取到原来的状态


step2 记录状态

我们需要知道两点:


1.ztree默认是闭合状态,展开的状态可以通过点击父节点来改变,


2.我们只需要记录改变的父节点就行了;


所以,我们就可以在点击父节点之后记录这个父节点就行了,


判断了点击事件是展开还是闭合之后,我们把下面的代码放置到对应的地方!


下面是记录点击后展开的状态,其实记录的是父节点:

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));

下面是记录点击后闭合的状态,其实也是记录的是父节点:

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));


step3 获取状态并设置到对应的父节点

加载ztree树之后,我们可以通过下面的代码获取到状态,

其中,childNodes是所有的节点(包括父节点),遍历childNodes,我们就可以找到cookie中对应的父节点

然后把这个节点的状态改为true就行啦!

var cookie = $.cookie("z_tree" + window.location);
if (cookie) {
  z_tree = JSON.parse(cookie);
  for (var i = 0; i < z_tree.length; i++) {
    for ( var index in childNodes) {
      if (z_tree[i] == childNodes[index].id) {
        childNodes[index].open = true;
      }
    }
  }
}


OK,GAME OVER!

相关文章
|
21天前
|
开发框架 前端开发 JavaScript
循序渐进VUE+Element 前端应用开发(8)--- 树列表组件的使用
循序渐进VUE+Element 前端应用开发(8)--- 树列表组件的使用
|
3月前
|
JavaScript 前端开发 UED
【Web 前端】如何将一个 HTML 元素添加到 DOM 树中的?
【5月更文挑战第2天】【Web 前端】如何将一个 HTML 元素添加到 DOM 树中的?
|
前端开发
前端学习笔记202305学习笔记第二十三天-获取树形控件选中的值
前端学习笔记202305学习笔记第二十三天-获取树形控件选中的值
50 0
|
10月前
|
算法 前端开发
前端算法-相同的树
前端算法-相同的树
|
10月前
|
存储 算法 前端开发
前端算法-叉树的最大深度
前端算法-叉树的最大深度
|
存储 前端开发
数据结构与前端开发(四)-树(上)
数据结构与前端开发(四)-树
50 0
|
前端开发
前端学习笔记202305学习笔记第二十三天-获取树形控件选中的值
前端学习笔记202305学习笔记第二十三天-获取树形控件选中的值
29 0
|
前端开发
前端学习笔记202305学习笔记第二十三天-树形控件和路由分析
前端学习笔记202305学习笔记第二十三天-树形控件和路由分析
33 0
|
前端开发
前端学习笔记202305学习笔记第二十三天-树形控件和路由分析2
前端学习笔记202305学习笔记第二十三天-树形控件和路由分析2
46 0
|
前端开发
前端学习笔记202305学习笔记第二十三天-树形控件和路由分析
前端学习笔记202305学习笔记第二十三天-树形控件和路由分析
48 0