jsTree Contextmenu获取选定的节点ID

时间:2014-09-27 12:50:11

标签: javascript jquery contextmenu jstree

您好我目前遇到了jsTree上下文菜单的问题。 我想获取所选节点的ID但是我已经查看了许多解决方案,但没有一个有效。我的代码如下。

我使用tree.get_selected($node)的函数会返回所选节点的对象,但我却在努力访问对象的id参数。我在下面使用了tree.get_selected($node).id,但它说的是undefined但是当我看到控制台时显然不是这样。

任何人都可以帮助我出错的地方吗?

$("#tree_1").jstree({
    "core" : {
    "themes" : {
        "responsive": false
    },
    // so that create works
    "check_callback" : true,
    'data' : {
        'url' : function (node) {
                if(node.id=='#') {
                    var id = 0; 
                } else {
                    var id = node.id;   
                }
                return 'organisation/getOrganisationLocations/'+id;
            }
        }
    },
    "types" : {
        "default" : {
            "icon" : "fa fa-folder icon-state-warning icon-lg"
        },
        "file" : {
            "icon" : "fa fa-file icon-state-warning icon-lg"
        }
    },
    "state" : { "key" : "demo3" },
    "plugins" : [ "dnd", "state", "types", "contextmenu" ],
    "contextmenu":{         
    "items": function($node) {
            var tree = $("#tree_1").jstree(true);
            return {
                "Create": {
                    "separator_before": false,
                    "separator_after": false,
                    "label": "Create",
                    "action": function (obj) { 
                        $node = tree.create_node($node);
                        tree.edit($node);

                        console.log(tree.get_selected($node).id);
                    }
                },
                "Rename": {
                    "separator_before": false,
                    "separator_after": false,
                    "label": "Rename",
                    "action": function (obj) { 
                        tree.edit($node);
                    }
                },
                "Remove": {
                    "separator_before": false,
                    "separator_after": false,
                    "label": "Remove",
                    "action": function (obj) { 
                        tree.delete_node($node);
                    }
                }
            };
        }
    }
});

2 个答案:

答案 0 :(得分:4)

这种方法对我有用:

$(node).attr('id')

答案 1 :(得分:1)

在jstree声明之上声明你的id(在第1行,put var id;)

然后,在data.url函数中,从分配给id的每一行之前删除var。