文章来源于用Jstree做权限组设置时的BUG
主要问题:
1. 选定父节点时其子节点默认全选?
2. 跨过父节点(展开所有节点)选定子节点时其其父节点的父节点的父节点的…父节点不自己动选定?
但是作为一个成熟的权限组,我们要的是它:
1. 选定父节点时只选定当前节点,不选定其子节点
2. 跨过父节点(展开所有节点)选定子节点时,自动选定其父节点的父节点的父节点的…父节点
SO 文章由来
解决办法
Jstree
初始化时设置:
"checkbox": {
"keep_selected_style": false,//是否默认选中
"three_state": false,//父子级别级联选择
"tie_selection": true,
"cascade":'undetermined'
},
此时,当你跨过父节点选定子节点时,其其父节点的父节点的父节点的…父节点会成为一个
半选的状态
,也就是一墨点(占满全格子那种)而不是
选定状态
的对号(√)
最后在向服务器提交数据的时候我们就要
获取所有的选定状态的节点及半选状态的节点
这样,选定子节点自动半选的父节点也会算在我们的权限组中
var nodes = [];//想要的权限节点id数组
$.each($("#container").jstree("get_checked"), function (index, item) {//获取所有选定节点
nodes.push(item);
});
$.each($("#container").jstree("get_undetermined"),function (index, item) {//获取所有半选节点
nodes.push(item);
});
版权声明:本文为weixin_39752671原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。