我有一个jstree。我想选择绑定到id为158的位置的对象的节点。这可行,但似乎很愚蠢。这样做的惯用方法是什么?
var $tree = $('.jstree', myContext),
node = $tree.find('li').filter(function() {
return ( $(this).data().location || {}).id === 158;
});
$tree.jstree('select_node', n)
答案 0 :(得分:36)
只是想在这里说话,因为没有一个答案对我有用。最后DID的工作非常简单:
$('#someTree').jstree('select_node', 'someNodeId');
请注意,我没有将someNodeId
初始化为jQuery对象。它只是一个简单的字符串。
我在加载树之后立即执行此操作,而将其放入" ready"绑定事件似乎没有必要。
希望它可以从几个令人沮丧的时间中节省一些。 。
在加载后挂钩到树中:
.on('loaded.jstree', function() {
// Do something here...
});
答案 1 :(得分:20)
基于jsTree groups,您可以尝试
jQuery("#getStartedTree").jstree("select_node", "#test2");
如果数据看起来像
The JSON in the TextFile.txt - borrowed from your simple example
[
{
"data" : "A node",
"children" : [ "Child 1", "Child 2" ]
},
{
"attr" : { "id" : "test1" },
"data" : {
"title" : "Long format demo",
"attr" : { "id" : "test2", "href" : "#" }
}
}
]
和jsTree设置
My tree container is <div id="getStartedTree">
My jsTree code
$("#getStartedTree").jstree({
"themes": {
"theme": "default",
"url": "../App_Css/Themes/Default/style.css",
"dots": true,
"icons": true
},
"json_data": {
"ajax": {
"url": "../SiteMaps/TextFile.txt",
"dataType": "json",
"data": function(n) {
return { id: n.attr ? n.attr("id") : 0 };
}
}
},
"plugins": ["themes", "json_data", "ui"]
});
这就是你追求的目标吗?
答案 2 :(得分:3)
我能够模拟jstree节点上的点击,作为选择节点的替代方法。 以下代码是使用的代码:
$(treeIdHandle + " li[id=" + nodeId + "] a").click();
答案 3 :(得分:2)
我使用的是jstree 3.0.8。不要使用&#39;州&#39;
'plugins' : ['dnd','sort','types','contextmenu','wholerow','ui']
和服务器提供json,所选节点有
"state":{"selected":true,"opened":true}
答案 4 :(得分:2)
我是这样做的:
$('.jstree').jstree(true).select_node('element id');
此代码:
jQuery.each(produto.categorias, function(i, categoria) {
$('#lista-categorias').jstree(true).select_node(categoria.dadoCategoria.id);
});
答案 5 :(得分:2)
如果您使用HTML而不是JSON数据填充树,并想知道如何设置node_id
,则只需设置<li>
元素的id属性!
<div class="tree-menu">
<ul class="menu">
<li id="node_1">
Node 1 - Level 1
<ul class="menu">
<li id="node_3">
Node 3 - Level 2
</li>
</ul>
</li>
<li id="node_2">
Node 2 - Level 1
</li>
</ul>
</div>
然后
$('.tree-menu')
.jstree(true)
.select_node("node_3");
将选择Node 3 - Level 2
节点。
对于那些出现javascript错误的人,请记住使用jQuery
的完整版,而不是精简版!
对于所有羽绒选民,以下是证明其正常工作的演示: https://jsfiddle.net/davidliang2008/75v3fLbs/7/
答案 6 :(得分:1)
此解决方案适合我
// after the tree is loaded
$(".jstree").on("loaded.jstree", function(){
// don't use "#" for ID
$('.jstree').jstree(true).select_node('ElementId');
});
甚至在php循环中(动态):
$(".jstree").on("loaded.jstree", function(){
<?php foreach($tree as $node): ?>
$('.jstree').jstree(true).select_node('<?=$node?>');
<?php endforeach;?>
});
希望这适合你。
答案 7 :(得分:0)
我认为您应该在jstree初始化后编写代码以选择节点,因此请使用此代码
$('#jstree')
.on('ready.jstree', function (e, data) {
// do function after jstree initialized
$('#jstree')
.jstree(true)
.select_node('nodeid');
});
希望它的工作:)
答案 8 :(得分:-1)
触发点击第一个锚点
$("#jstree .jstree-anchor:first").click();
或按节点ID 158
$("#jstree #158").find(".jstree-anchor:first").click();
$('#' + 158).find(".jstree-anchor:first").click();