如何在 jstree 加载上打开选定的(选中的)节点

How to open selected (checked) nodes on jstree load?

本文关键字:节点 jstree 加载      更新时间:2023-09-26

我正在使用jsTree来显示我的数据库层次结构类别,如交互式树。初始加载是使用 JSON 完成的,默认情况下会检查某些类别。jsTree 知道选择了哪些类别,因为它将它们显示为选中(我正在使用复选框插件),但我希望能够在树加载时打开选中的节点(及其所有父节点)。

我需要它,因为当用户打开带有树的页面时,他不知道可能会在不展开整个树的情况下选择某些类别,并且我只想展开那些选中的节点。

这是我到目前为止的代码:

var tree = $('.tree').bind('loaded.jstree', function (e, data) {
              // I assume that logic that expand checked nodes must be placed here, after tree is loaded
    })
    .jstree({
        // Configure JSON data plugin
        'json_data': {
            'data': [<this is initial json data>]
        },
        'checkbox': {
            'override_ui': true,
            'two_state': true,
            'real_checkboxes': true
        },
        // Specify which plugins to load
        'plugins': ['themes', 'json_data', 'ui', 'checkbox']
    });

谢谢!

你应该看看状态插件,您必须在选中的节点上设置要打开的状态。

在插件数组中添加"状态"。在树的 json 中,在每个节点的数据之后,添加一个对象,如下所示:状态:{ 打开 : 真}

我认为不需要状态插件。 它保存树的状态,并在下次遇到树时将树重新打开到该状态。

但重要的是,@alostr是正确的,如果您将节点的数据设置为状态:{ open: true },它将在显示该节点后打开该节点。