簡體   English   中英

如何以編程方式在 jsTree 中選擇一個節點並打開所有父節點

[英]How do I programmatically select a node in jsTree and open all parents

在多級 jsTree 中,如何選擇特定節點(可能是葉節點)並展開它的所有父節點? 例子:
從這個 JSFiddle ( http://jsfiddle.net/mmeah/fyDE6/ ) 我想以編程方式選擇 Grand Child 並打開所有父節點。

在某些情況下,如果用戶通過深層鏈接進入我的網站,我會嘗試確保用戶返回到樹中的正確節點

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);
}

​​​

啊哈,我在正確的軌道上,但我的深度鏈接解析代碼和樹的構造之間存在競爭條件

選擇節點並觸發事件

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

要在樹加載后執行此操作,以便它可以工作......

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

jQuery 選擇不適用於尚未打開 [展開] 的節點。 因此,我選擇在進行 jQuery 選擇之前打開 [展開] 所有元素,然后關閉所有節點。

 // open all nodes to select the desired node using jquery. $("#tree").jstree('open_all'); var node = $("desiredNodeSelector"); // close all tree since we are done with the selection $("#tree").jstree('close_all');

現在我們只需要使用'select_node' jstree api。

 $("#tree").jstree('select_node', node);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM