我有一个很大的jstree结构来实现一个分类经理。我可以通过id打开特定节点没有问题: treeElement.jstree('open_node',nodeId);
我写了一个搜索框,当我从搜索下拉列表中选择一个项目时,会打开该项目的编辑框。但是,从左侧面板向下查看的树不会聚焦于此项目。我可以打开所选节点,但它可能在屏幕外,因为它可能位于树的不同部分,而不是当前可见的选择(它都在一个大的滚动区域中)。
我的问题:我怎样才能使树聚焦在所需的节点上?用户需要实际查看所选节点所在树中的位置。我不想向上或向下滚动来找到它。这似乎相当标准,但我无法在任何地方找到答案。谢谢!
答案 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);
}