我必须只显示选定的节点和父节点,并隐藏休息节点。
当前文档中没有get_unchecked。我的json格式很大,所以把它放在字符串中,格式化和重新加载树将是低效的。
有没有办法获取所有未经检查的节点并隐藏它? 如果有,我可以检查当前已检查节点的所有父节点,然后只是隐藏所有未经检查的节点,但我找不到任何方法来检索所有未检查的节点。
答案 0 :(得分:1)
您可以通过以下方式完成:
检查以下代码并演示 - codepen。
var $tree = $("#myTree").jstree(),
nodesSelected = $('#myTree').jstree('get_checked', true),
nodeIdsToStay = [];
nodesSelected.forEach(function(node) {
var path = $tree.get_path(node, false, true);
path.forEach(function(n) {
if (nodeIdsToStay.indexOf(n) === -1) {
nodeIdsToStay.push(n);
}
})
})
$('#myTree').find('li').each(function() {
if (nodeIdsToStay.indexOf(this.id) === -1) {
$(this).hide();
}
})
答案 1 :(得分:1)
解决我提出的问题。
$('#jstree_demo_div').on('loaded.jstree', function(e, data) {
console.log("loaded");
checked_ids = $('#jstree_demo_div').jstree('get_selected', true);
$("#jstree_demo_div").jstree('select_all');
$.each(checked_ids, function(index, value) {
$("#jstree_demo_div").jstree('deselect_node', value);
uiParentsShow(value);
});
checked_ids = $('#jstree_demo_div').jstree('get_selected', true);
$.each(checked_ids, function(index, value) {
$("#jstree_demo_div").jstree('hide_node', value);
});
});
function uiParentsShow(node) {
try {
var parent = $("#jstree_demo_div").jstree('get_parent', node);
$("#jstree_demo_div").jstree('deselect_node', parent);
if (parent != '#') {
uiParentsShow1(parent);
}
} catch (err) {
console.log('Error in uiGetParents' + err);
}
}
步骤:
答案 2 :(得分:0)
根据上面的响应,我能够创建此函数,该函数根据节点属性值过滤Treeview。 (替换“
$('#jstree').find('li').each(function () {
if ($("#" + this.id).attr("tag") == "<MYTAG>") {
$(this).hide();
}
else {
$(this).show();
}
})