如何以编程方式选择 jsTree 中的节点并打开所有父节点

新手上路,请多包涵

在多级 jsTree 中,如何选择特定节点(可能是叶节点)并展开它的所有父节点?例子:

从这个 JSFiddle ( http://jsfiddle.net/mmeah/fyDE6/ ) 我想以编程方式选择 Grand Child 并打开所有父节点。

在某些情况下,如果用户通过深层链接进入我的网站,我会尝试确保用户返回到树中的正确节点

原文由 David Hayes 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 740
2 个回答

jsTree 给出了一个 open_node() 函数来任意触发任意节点打开。只需扫描树中未打开的父母并打开它们。

示例:http: //jsfiddle.net/mmeah/yyy8W/

 $("#findChild").click(function(){
    $.jstree._reference(myTree).open_node("#Node_001",function(){;},false);
});
$("#findGrandChild").click(function(){
    var closedParents = $("#Node_003").parents("li.jstree-closed");
    for(var i=closedParents.length-1;i>=0;i--){
        pleaseOpen($(closedParents[i]));
    }
});

function pleaseOpen(thisNode){
    if(typeof thisNode=="undefined") return;
    if(thisNode.hasClass("jstree-leaf") || thisNode.hasClass("jstree-open") ) return;
    $.jstree._reference(myTree).open_node(thisNode,function(){;},true);
}

原文由 MMeah 发布,翻译遵循 CC BY-SA 3.0 许可协议

啊哈,我在正确的轨道上,但我的深度链接解析代码和树的构造之间存在竞争条件

选择节点并触发事件

$("#tree").jstree("select_node", selector).trigger("select_node.jstree");

在树加载后执行此操作以便它工作……

 $("#tree").jstree(...).bind("loaded.jstree", function ()
{
    $("#tree").jstree("select_node", selector).trigger("select_node.jstree");
});

原文由 David Hayes 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题