我正在使用JQuery插件jsTree,http://www.jstree.com/ 我可以使用以下方法扩展整个树:
$("#tree").jstree("open_all");
以及特定节点:
$("#tree").jstree("open_node", $('#childNode'));
我在打开树的一个分支时遇到困难,open分支打开它很好但是如果它有一个则不打开它的父。
有没有人用jsTree成功完成这项工作?如果您需要更多信息,请告诉我。
由于
EEF
答案 0 :(得分:16)
您的开放分支代码是正确的。
例如。树的来源:
<div id="treeTask">
<ul>
<li id="node_37"><a href="#">TEST1</a>
<ul>
<li id="node_38"><a href="#">TEST2</a></li>
<li id="node_39"><a href="#">TEST3</a></li>
</ul>
</li>
</ul>
</div>
开放节点:
$("#treeTask").jstree("open_node", $("#node_38"));
答案 1 :(得分:10)
尝试使用此代码打开节点直到第n级
$("#myTree").jstree({options}).bind('loaded.jstree', function (e, data) {
/**
* Open nodes on load (until x'th level)
*/
var depth = 3;
data.inst.get_container().find('li').each(function (i) {
if (data.inst.get_path($(this)).length <= depth) {
data.inst.open_node($(this));
}
});
});
答案 2 :(得分:9)
您可以使用绑定
$("#tree").bind("open_node.jstree", function (event, data) {
if((data.inst._get_parent(data.rslt.obj)).length) {
data.inst._get_parent(data.rslt.obj).open_node(this, false);
}
});
答案 3 :(得分:4)
这是可以打开特定节点及其所有父节点的函数。
function expandNode(nodeID) {
// Expand all nodes up to the root (the id of the root returns as '#')
while (nodeID != '#') {
// Open this node
$("#jstree").jstree("open_node", nodeID)
// Get the jstree object for this node
var thisNode = $("#jstree").jstree("get_node", nodeID);
// Get the id of the parent of this node
nodeID = $("#jstree").jstree("get_parent", thisNode);
}
}
答案 4 :(得分:3)
我发现Ted的代码正常工作,但不得不改变一下:
$('#jsTree').bind("open_node.jstree", function (event, data) {
if((data.inst._get_parent(data.rslt.obj)).length) {
data.inst.open_node(data.inst._get_parent(data.rslt.obj), false,true);
}
});
答案 5 :(得分:3)
如果你使用json
就使用它$("#treeId").on
('loaded.jstree', function() {
$("#treeId").jstree("open_node", $("#nodeId"));
});
答案 6 :(得分:1)
之前没有为我工作,所以我创建了这个代码,它就像一个魅力:)
$('#tree').on('open_node.jstree', function (event, data) {
if(data.node.parent !== "#") {
data.instance.open_node(data.node.parent);
}
});
答案 7 :(得分:0)
// Expand pasted, dragged and dropped node for jstree 3.3.1
var objtree = $('#jstree');
objtree.bind('paste.jstree', function(e, d) { objtree.jstree('open_all', '#' + d.parent); });
$(document).bind('dnd_move.vakata', function(e, d) { objtree.jstree('open_all', $(d.event.target).closest('.jstree-node').attr('id')); });
$(document).bind('dnd_stop.vakata', function(e, d) { objtree.jstree('open_all', $(d.event.target).closest('.jstree-node').attr('id')); });