【问题标题】:How to give child nodes an 'id' with JSON in jsTree如何在 jsTree 中使用 JSON 给子节点一个“id”
【发布时间】:2011-09-12 13:39:36
【问题描述】:

我有一棵像这样通过 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”属性。

有什么想法吗?

【问题讨论】:

  • 您是否尝试过使用 Chrome 调试器或 Firebug 实际查看 DOM 以查看生成的 HTML 元素的样子?
  • @Pointy 是的,html 代码中不存在 id 属性。但是,父节点也不存在它,这很奇怪,因为当我单击父节点时,id 确实出现在警报框中。没有显示的是孩子的“id”。
  • 我对 jsTree 不熟悉,但假设这是在创建一个 DOM 结构,您似乎将相同的 id 分配给多个元素,这是非法的。
  • 你能创建 jsfiddle 的例子吗?

标签: javascript jquery html json jstree


【解决方案1】:

只需使用“attr”而不是“attributes”。这是jsfiddle 链接。

【讨论】:

  • 感谢 Luffy > 只需使用 "attr" 而不是 "attributes"。这是jsfiddle链接。经过数小时的搜索和失望后为我工作,因为我在我的 JSON 数据中使用“属性”。
【解决方案2】:

我遇到了同样的情况,即使用 JSON 数据源并且无法通过站点文档中甚至提到的非常简单直接的语句获取 id(顺便说一句,我个人觉得 jsTree 的文档没有以它的高负载功能为标志)

alert(data.rslt.obj.data("id"));

经过数小时的搜索和逐点调试,发现差异只是一个词。使用 attr 而不是全字 attributes

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    • 2018-10-22
    相关资源
    最近更新 更多