如果在父节点扩展之前子节点不存在,如何在JsTree中打开子节点?

时间:2016-02-24 19:46:02

标签: javascript jstree

我有一个有多个子节点的父节点。问题是如果我想打开一个我称之为$("#jstree").jstree("open_node", $('#node_27'));的特定节点。问题是父节点未打开,因此$('#node_27')返回一个空数组。

如果我有子ID,如果在父母打开之前没有将它们添加到DOM中,我怎么能打开它?

3 个答案:

答案 0 :(得分:1)

显然,如果你想“深度打开”一个节点,你需要使用

$("#jstree1").jstree("open_node", ['rootId','childId','childChildId','yourNodeId']);

但是,有一个名为_open_to的方法已经自动完成,所以你可以这样做:

$("#jstree1").jstree("_open_to", 'yourNodeId'); //j1_5 in your case

它将打开它需要的任何内容,以便到达你想要的节点

答案 1 :(得分:1)

_open_to方法是私有方法,不应该直接使用。虽然现在正在工作,但将来可能会发生变化,例如当jsTree作者决定改变他的图书馆的内部机制时。

要将父母打开到节点,您只需使用

即可
$('#jstree1').jstree('select_node', 'node_27' );

作为奖励,您将获得目标节点。

答案 2 :(得分:0)

如果使用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);