javascript - 如何从 data.args 中获取新创建的节点的 id?

标签 javascript jquery jstree

我想在用户单击“创建”按钮让他们填写表单时显示一个精美框。这用于捕获附加数据并将其与 jsTree 中新创建的节点相关联。我需要获取新创建的节点的 ID,并将其作为 fancybox 调用中的 GET 参数传递。到目前为止我似乎还不知道如何获取 ID。

这是我到目前为止所拥有的:

    $("#demo").jstree({ 
        // List of active plugins
        "plugins" : ["themes", "json_data", "ui", "crrm", "cookies", "dnd", "search", "types", "hotkeys", "contextmenu", "unique"],

        .bind("create.jstree", function (e, data) {
            $.post(
                "server.php", 
                { 
                    "operation" : "create_node", 
                    "id" : data.rslt.parent.attr("id").replace("node_",""), 
                    "position" : data.rslt.position,
                    "title" : data.rslt.name,
                    "type" : data.rslt.obj.attr("rel")
                }, 
                function (r) {
                    if(r.status) {
                        $(data.rslt.obj).attr("id", "node_" + r.id);
                    }else{
                        $.jstree.rollback(data.rlbk);
                    }
                }
            );
        })

    $("#demo").bind("before.jstree", function (e, data) {
        if(data.func === "create") { 
            var id = data.args[0].attr("id").replace("node_","");
            showFancybox("edit_task.php?action=create&parent_id="+id);
        }
    })

    // Code for the menu buttons
    $(function () { 
        $("#mmenu input").click(function () {
            switch(this.id) {
                case "add_default":
                case "add_folder":
                    $("#demo").jstree("create", null, "last", { "attr" : { "rel" : this.id.toString().replace("add_", "") } });
                    break;
                case "search":
                    $("#demo").jstree("search", document.getElementById("search_text").value);
                    break;
                case "text": break;
                default:
                    $("#demo").jstree(this.id);
                    break;
            }
        });
    });

我现在的代码在创建新节点之前找到父 ID。我尝试等待几秒钟,然后尝试从数据库中读取最新的条目,但这并不是非常可靠,而且速度比需要的要慢。创建新节点并将其添加到数据库后,如何从 jsTree 获取新节点的 ID?

最佳答案

这有效:

id = data.args[0].attr("id");

关于javascript - 如何从 data.args 中获取新创建的节点的 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12127302/

相关文章:

javascript - 带有 Node.js 请求模块的多个请求池

JavaScript 打印输入innerHTML 返回未定义?

javascript - 响应式 Jquery 切换命令

javascript - 添加年份来计算

jquery - 如何选择拥有相同ID的每个节点

jquery - jstree选择节点

javascript - 当设置 JSON.stringify 值等于变量时,它会在前面添加 '\' 并在末尾添加\'

jquery - 在 jQuery ajax 回调函数中访问数组值

php - 选择员工姓名,他/她的 ID 将显示在 PHP 的文本框中

javascript - JSTree Three_State 和 uncheck_node