jsTree - 在Json数据中设置href属性

时间:2012-03-01 09:02:31

标签: json href jstree

我试图创建一个'jsTree'树视图,从.Net webservice获取它的数据。 除了a-node的href属性外,一切正常。无论我尝试什么,它总是呈现为'#'。 据我从文档中了解,任何数据对象中的所有属性都会被复制到a节点。

下面是我当前的json对象的示例。无论如何可以找出为什么href属性没有被复制到节点?

    [ { "attributes" : { "id" : "rootnode_2",
        "rel" : "root2"
      },
    "children" : [ { "attributes" : { "id" : "childnode_9",
              "rel" : "folder"
            },
          "children" : [ { "attributes" : { "id" : "childnode_23",
                    "rel" : "folder"
                  },
                "children" : null,
                "data" : { "href" : "http://www.google.com",
                    "title" : "Test_Below_1"
                  },
                "state" : null
              } ],
          "data" : { "href" : "http://www.google.com",
              "title" : "Test_1"
            },
          "state" : null
        },
        { "attributes" : { "id" : "childnode_10",
              "rel" : "folder"
            },
          "children" : [ { "attributes" : { "id" : "childnode_24",
                    "rel" : "folder"
                  },
                "children" : null,
                "data" : { "href" : "http://www.google.com",
                    "title" : "Test_Below_2"
                  },
                "state" : null
              } ],
          "data" : { "href" : "http://www.google.com",
              "title" : "Test_2"
            },
          "state" : null
        }
      ],
    "data" : { "href" : "http://www.google.com",
        "title" : "Glatt"
      },
    "state" : "closed"
  } ]

这是我初始化树的方式;

$("#jstreejson").jstree({
        json_data : {
            "data": treeObject
        },
        themes: {
            "theme": "apple",
            "dots": true,
            "icons": true,
            "url": "/Scripts/themes/apple/style.css"
        },
        plugins: ['core', 'themes', 'json', "json_data"]
    });

1 个答案:

答案 0 :(得分:2)

所以......我不确定这是完全正确的。据我所知,你无法控制锚属性,但你可以做些什么来添加json中的attr哈希值,然后使用select_node.jstree事件打开所需的链接,即:

.bind("select_node.jstree", function (e,data) {
   var href_address = data.rslt.obj.attr("whatever");
   // open desired link
}