如何给子节点一个'id'在jtree中使用JSON

How to give child nodes an 'id' with JSON in jsTree

本文关键字:jtree id JSON 一个 子节点      更新时间:2023-09-26

我有一个树,它已经通过JSON填充,像这样(请原谅格式):

$("#treeView").jstree({
          "themes": {
              "theme": "default",
                "dots": false,
                  "icons": false
                   },
           "json_data": {
                "data": [
        {
        "data": "2011",
        "metadata": { id: 2011 },
        "children": [
{ "data": "January", "attributes": { "id": "jan_2011"} },
{ "data": "February", "attributes": { "id": "feb_2011"} },
{ "data": "March", "attributes": { "id": "mar_2011"} },
{ "data": "April", "attributes": { "id": "apr_2011"} },
{ "data": "May", "attributes": { "id": "may_2011"} },   
{ "data": "June", "attributes": { "id": "jun_2011"} },
{ "data": "July", "attributes": { "id": "jul_2011"} },
{ "data": "August", "attributes": { "id": "aug_2011"} },
{ "data": "September", "attributes": { "id": "sep_2011"} },
{ "data": "October", "attributes": { "id": "oct_2011"} },
{ "data": "November", "attributes": { "id": "nov_2011"} },
{ "data": "December", "attributes": { "id": "dec_2011"} }
]
                }]
                    },
                    "plugins": ["themes", "json_data", "ui"]
                }).bind("select_node.jstree", function (e, data) {
                    alert(data.rslt.obj.data("id"));
                });
            });

我的问题是,每当一个节点被点击,警告框不显示任何东西,或简单地"未定义"。换句话说,我认为没有为子节点设置'id'属性。

任何想法?

用"attr"代替"attributes"。

我面临着同样的情况,即使用JSON数据源,无法用一个非常简单和直接的语句获得id,甚至在站点文档中也提到了(顺便说一句,我个人觉得jsTree的文档没有达到其高负载特性的标志)

alert(data.rslt.obj.data("id"));
经过数小时的搜索和逐点调试,发现

是一个单词。使用attr代替完整的单词属性,即

{ "data": "January", "attr": { "id": "jan_2011"} },