【发布时间】:2017-12-07 13:19:00
【问题描述】:
在 jsTree 中,我想绘制一棵新树来替换之前的树,并在新树中初始选择节点。
在下面的代码中,我确认state : {opened : true} 使节点最初打开,state : {disabled : true} 使节点最初禁用,所以我认为state : {selected : true} 也可以,但实际上并非如此。
请注意,在调用$('#using_json').jstree({...}); 时指定state : {selected : true} 会导致按照https://www.jstree.com/docs/json/ 中的描述选择节点。然后,我想知道为什么当我用新树替换现有树时state : {selected : true} 不起作用(而state : {opened : true} 和state : {disabled : true} 正在工作)。
替换树后如何实现节点被初始选中?
$('#using_json').jstree({ 'core' : {
data : [
{
text : 'Previous root node',
}
]
} });
const newData = [
{
text : 'New root node (Initially opened)',
state : {
opened : true, //'opened' takes effect after refresh
},
children : [
{ text : 'Child 1 (Initially disabled)',
state : {
disabled : true, //'disabled' takes effect after refresh
}
},
{ text : 'Child 2 (Intended to be selected initially but failing)',
state : {
selected : true //'selected' does NOT take effect after refresh
}
}
]
}
]
$('#using_json').jstree(true).settings.core.data = newData;
$('#using_json').jstree(true).refresh(true);
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.3.4/themes/default/style.min.css" />
</head>
<body>
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.3.4/jstree.min.js"></script>
<div id="using_json"></div>
</body>
</html>
【问题讨论】:
标签: javascript jstree