マルチレベルのjsTreeで、特定のノード(おそらくリーフノード)を選択し、そのすべての親を展開するにはどうすればよいですか?例:
このJSFiddle(http://jsfiddle.net/mmeah/fyDE6/)から、プログラムで孫を選択し、すべての親ノードを開きます。
一部のコンテキストでは、ユーザーが自分のサイトへのディープリンクをたどった場合に、ユーザーがツリー内の正しいノードに戻るようにしようとしています。
マルチレベルのjsTreeで、特定のノード(おそらくリーフノード)を選択し、そのすべての親を展開するにはどうすればよいですか?例:
このJSFiddle(http://jsfiddle.net/mmeah/fyDE6/)から、プログラムで孫を選択し、すべての親ノードを開きます。
一部のコンテキストでは、ユーザーが自分のサイトへのディープリンクをたどった場合に、ユーザーがツリー内の正しいノードに戻るようにしようとしています。
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);
}
</ p>
ああ、私は正しい方向に進んでいましたが、ディープリンク解析コードとツリーの構築の間に競合状態がありました
ノードを選択してイベントをトリガーするには
$("#tree").jstree("select_node", selector).trigger("select_node.jstree");
ツリーがロードされた後にこれを行うには、それが機能します...
$("#tree").jstree(...).bind("loaded.jstree", function ()
{
$("#tree").jstree("select_node", selector).trigger("select_node.jstree");
});