如何在jstree加载时打开选定(已检查)的节点?

时间:2013-10-03 10:43:06

标签: javascript jquery jstree

我正在使用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']
    });

谢谢!

2 个答案:

答案 0 :(得分:1)

你应该看一下状态插件, 您必须将已检查节点的状态设置为打开。

在插件数组中添加&#34; state&#34;。 在树的json中,在每个节点的数据之后,添加如下对象: 州:{     打开:是的 }

答案 1 :(得分:0)

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

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