jsTree开设分行

Rai*_*Son 21 javascript treeview jquery jstree

我正在使用JQuery插件jsTree,http://www.jstree.com/ 我可以使用以下方法扩展整个树:

$("#tree").jstree("open_all");
Run Code Online (Sandbox Code Playgroud)

还有一个特定的节点:

$("#tree").jstree("open_node", $('#childNode'));
Run Code Online (Sandbox Code Playgroud)

我很难打开树的一个分支,打开分支打开它很好,但如果它有一个就不打开它的父.

有没有人用jsTree成功完成这项工作?如果您需要更多信息,请告诉我.

谢谢

EEF

小智 18

您的开放分支代码是正确的.

例如.树的来源:

    <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>
Run Code Online (Sandbox Code Playgroud)

开放节点:

$("#treeTask").jstree("open_node", $("#node_38"));
Run Code Online (Sandbox Code Playgroud)


Arv*_*ind 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));
        }
    });
});
Run Code Online (Sandbox Code Playgroud)


Bob*_*Bob 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); 
  } 
}); 
Run Code Online (Sandbox Code Playgroud)

  • 最终不应该有某种"解体"吗? (2认同)

小智 5

这是可以打开特定节点及其所有父节点的函数。

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);
    }
}
Run Code Online (Sandbox Code Playgroud)