實現(xiàn)后臺管理端樹形權(quán)限勾選,沒有使用默認勾選策略,默認勾選策略不是很人性化,自己通過事件實現(xiàn)策略,還是不是很完美。
QQ圖片20170512154543.png
插件代碼
$('#jstree1').jstree({
'core': {
'data': ${treeJson},
'expand_selected_onload' : false
},
"checkbox" : {
"keep_selected_style" : false,
'three_state' : false,
'tie_selection' : false
},
"plugins" : [ "checkbox" ]
}).bind('loaded.jstree', function(event, jstree) {
var $jstree = $('#jstree1').jstree(true);
var data = jstree.instance._model.data;
var firstSubKey;
// 根據(jù)json參數(shù)勾選默認
for(key in data) {
if('#' === key) {
continue;
}
if(data[key].li_attr._checked) {
$jstree.check_node(key);
}
if(!firstSubKey && $jstree.get_node(key).parents.length == 1) {
firstSubKey = key;
}
}
// 默認打開一級展示
if(firstSubKey) {
$jstree.close_all();
$jstree.open_node(firstSubKey);
}
}).bind('open_node.jstree', function(event, jstree) {
// 打開當前級關(guān)閉其它級展示
var $jstree = $('#jstree1').jstree(true);
var data = jstree.instance._model.data;
var cur_node = jstree.node;
for(key in data) {
if(key !== cur_node.id && !isInArray(cur_node.parents, key)) {
$jstree.close_node(key);
}
}
}).bind('check_node.jstree', function(event, jstree) {
var $jstree = $('#jstree1').jstree(true);
var data = jstree.instance._model.data;
var cur_node = jstree.node;
if(!$jstree.is_open(cur_node.id)) {
$jstree.open_node(cur_node.id);
}
// 選中及所有父級
$jstree.check_node(cur_node.parents);
}).bind('uncheck_node.jstree', function(event, jstree) {
// 取消其所有子級
var $jstree = $('#jstree1').jstree(true);
var data = jstree.instance._model.data;
var cur_node = jstree.node;
for(key in data) {
var node = $jstree.get_node(key);
if(cur_node.id === node.parent) {
$jstree.uncheck_node(key);
}
}
});
獲取選中id
var ids = [];
var $jstree = $('#jstree1').jstree(true);
var data = $jstree._model.data;
for(key in data) {
if($jstree.is_checked(key)) {
ids.push(data[key].li_attr._id);
}
}