当 child 节点不存在直到 parent 展开时,如何在 JsTree 中打开 child 节点?
How to open child node in JsTree when child nodes do not exist until parent is expanded?
我有一个 parent 有多个 children 节点。问题是如果我想打开我调用的特定节点 $("#jstree").jstree("open_node", $('#node_27'));
。问题是 parent 节点未打开,因此 $('#node_27')
returns 是一个空数组。
如果我有 child ID,在打开 parent 之前没有将它们添加到 DOM 时如何打开它?
显然,如果你想 "deep open" 一个节点,你需要使用
$("#jstree1").jstree("open_node", ['rootId','childId','childChildId','yourNodeId']);
但是,有一个名为 _open_to 的方法已经自动执行此操作,因此您可以执行以下操作:
$("#jstree1").jstree("_open_to", 'yourNodeId'); //j1_5 in your case
它会打开它需要的任何东西以到达你想要的节点
_open_to
方法是私有方法,不应直接使用。虽然现在正在工作,但将来可能会改变,例如当 jsTree 作者决定改变他的库的内部机制时。
要打开父节点到节点,您可以简单地使用
$('#jstree1').jstree('select_node', 'node_27' );
作为奖励,您将选择目标节点。
如果您使用ajax 来填充树,则存在子节点延迟加载。您必须先使用 'load_node' 加载父节点,然后使用 'select_node' 加载子节点。
$('#jstree').on('refresh.jstree', function () {
$('#jstree').jstree(true).load_node('parent-id', function () {
$('#jstree').jstree().deselect_all();
$('#jstree').jstree('select_node', 'child-id');
});
});
$('#jstree').jstree(true).refresh(false, false);
我有一个 parent 有多个 children 节点。问题是如果我想打开我调用的特定节点 $("#jstree").jstree("open_node", $('#node_27'));
。问题是 parent 节点未打开,因此 $('#node_27')
returns 是一个空数组。
如果我有 child ID,在打开 parent 之前没有将它们添加到 DOM 时如何打开它?
显然,如果你想 "deep open" 一个节点,你需要使用
$("#jstree1").jstree("open_node", ['rootId','childId','childChildId','yourNodeId']);
但是,有一个名为 _open_to 的方法已经自动执行此操作,因此您可以执行以下操作:
$("#jstree1").jstree("_open_to", 'yourNodeId'); //j1_5 in your case
它会打开它需要的任何东西以到达你想要的节点
_open_to
方法是私有方法,不应直接使用。虽然现在正在工作,但将来可能会改变,例如当 jsTree 作者决定改变他的库的内部机制时。
要打开父节点到节点,您可以简单地使用
$('#jstree1').jstree('select_node', 'node_27' );
作为奖励,您将选择目标节点。
如果您使用ajax 来填充树,则存在子节点延迟加载。您必须先使用 'load_node' 加载父节点,然后使用 'select_node' 加载子节点。
$('#jstree').on('refresh.jstree', function () {
$('#jstree').jstree(true).load_node('parent-id', function () {
$('#jstree').jstree().deselect_all();
$('#jstree').jstree('select_node', 'child-id');
});
});
$('#jstree').jstree(true).refresh(false, false);