Jstree没有为li元素分配id

时间:2012-01-27 03:24:43

标签: jquery ajax json bind jstree

我有一个jstree的例子。与json是ajax。

以下是我创建树的方法。

        $("#tree").jstree({
            "plugins" : ["themes", "json_data", "ui"],
            "json_data" : {
                "ajax" : {
                    "type": 'GET',
                    "url": function (node) {
                        var nodeId = "";
                        var url = ""
                        if (node == -1)
                        {
                            //first url called is static
                            url = "myUrl";
                        }
                        else
                        {
                           //click on a node "li", get the id, append it to the url.
                           nodeId = node.attr('id');
                           url = "myUrl" + nodeId;
                        }

                        return url;
                    },
                    "success": function (new_data) {
                       //get the data topNode out of the json object
                       new_data = new_data.topNode;

                       return new_data;
                    }
                }
            },

        }); 

这是输出。

<div id="tree" class="jstree-classic jstree jstree-0 jstree-focused jstree-default">
    <ul>
        <li class="jstree-closed jstree-last">
            <ins class="jstree-icon">&nbsp;</ins>
            <a class="" href="#">Item 1</a> 
        </li>
    </ul>
</div>

然而,当树被渲染时,&lt; LI&gt; element没有id。应自动附加到&lt; LI&gt;。我错过了什么?

2 个答案:

答案 0 :(得分:1)

如果以下是您从ajax调用返回的数据,则需要将"id":"1"移至属性部分

{"topNode":{"data":"Item 1",
            "children":[],
            "state":"closed",
            "id":"1",
            "attributes":{"class":"editContainerL‌​ink","href":"#"}
           }
}

所以它看起来像

{"topNode":{"data":"Item 1",
            "children":[],
            "state":"closed",
            "id":"1",
            "attributes":{"class":"editContainerL‌​ink",
                          "href":"#",
                          "id":"1"
                          }
           }
}

答案 1 :(得分:0)

只需将属性更改为attr,id就会出现在“a”节点中。我也希望在“li”节点中使用id,但直到现在我的元数据尝试都没有成功。

// the `metadata` property will be saved using the jQuery `data` function on the `li` node
"metadata" : "a string, array, object, etc",

自: http://www.jstree.com/documentation/json_data