在jstree中如何将指定的节点聚焦在一棵大树上?

时间:2015-04-10 14:13:05

标签: tree focus jstree visible

我有一个很大的jstree结构来实现一个分类经理。我可以通过id打开特定节点没有问题: treeElement.jstree('open_node',nodeId);

我写了一个搜索框,当我从搜索下拉列表中选择一个项目时,会打开该项目的编辑框。但是,从左侧面板向下查看的树不会聚焦于此项目。我可以打开所选节点,但它可能在屏幕外,因为它可能位于树的不同部分,而不是当前可见的选择(它都在一个大的滚动区域中)。

我的问题:我怎样才能使树聚焦在所需的节点上?用户需要实际查看所选节点所在树中的位置。我不想向上或向下滚动来找到它。这似乎相当标准,但我无法在任何地方找到答案。谢谢!

3 个答案:

答案 0 :(得分:8)

使用get_node函数并将asDom参数设置为true,然后进行聚焦,如下所示:

treeElement.jstree(true).get_node(nodeId, true).children('.jstree-anchor').focus();

请记住,节点必须是可见的(在DOM中)才能使其生效。

如果节点不可见(其中一个父节点已关闭),您可以使用内部_open_to函数来显示它(您也可以将其集中在此处以保持简单):

treeElement.jstree(true)._open_to(nodeId).focus();

祝你好运, 伊万

答案 1 :(得分:0)

据我所知,当您从下拉列表中选择一个节点时,您也希望实际看到它。 你尝试过使用jQuery .focus()吗?

$( "#dropdown-item" ).click(function() {
  $( "#nodeId" ).focus();
});

答案 2 :(得分:0)

1-在jstree的核心必须添加("动画":0)

"core": {
    "initially_open": ["phtml_1"],
    "rtl": true,
    "animation": 0
},

2-选择节点:

var str1 ='mynodeid';
$("#demo1").jstree('select_node', "#" + str1 );

3- in bind Select_node功能:

.bind("select_node.jstree", function (event, data) {
    data.inst._fix_scroll(data.rslt.obj);
}
相关问题