簡體   English   中英

JQuery function 在jstree中找到一個節點的state?

[英]JQuery function to find state of a node in jstree?

我在檢索 jstree 中選定節點的 state 時遇到困難(使用 JSON 數據)。 這是我嘗試實現的方式:

$(function () {
    $("#tree").jstree({ 
        "json_data" : {
            "data" : [
                { 
                    data : "/", 
                    attr : { "id" : "root"},
                    state : "closed",
                    "children" : [ { "data" : "child1",
                                    "attr" : { "id" : "child1.id" },
                                    "children" : [ ] }
                                 ]
                },
            ]
        },
        "plugins" : [ "themes", "json_data", "crrm", "ui" ]
    })
    .bind("select_node.jstree",function(event, data) { . . . }

根據我的研究,我發現data.rslt.obj.attr("state")應該返回state("open" or "closed")但它返回未定義。 你能幫我確定我在這里缺少什么嗎?

正如@digringo

$('#tree').jstree(true).get_state()

這將返回一個 object,其中包括打開的 <li <li> id 數組和選擇的<li> id 數組。

然后您可以遍歷數組以查看特定子項是否已打開和/或已選中。

在AFAICT中,jsTree不會將狀態存儲在任何地方(尤其是在查詢源代碼之后),而是使用節點的類來確定狀態。

因此,我最好的建議是執行以下操作:

(...)
.bind("select_node.jstree", function (e, data) {
    var isOpen = data.rslt.obj.hasClass("jstree-open");
    console.log(data, 'selection is ' + (isOpen ? 'open' : 'closed'));
});

使用

$('#tree').jstree(true).get_state()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM