1

ユーザーが[作成]ボタンをクリックしてフォームに入力するときに、ファンシーボックスを表示したいと思います。これは、追加のデータをキャプチャし、それを 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 を取得するにはどうすればよいですか?

4

1 に答える 1

1

これは機能します:

id = data.args[0].attr("id");
于 2012-08-26T03:09:49.570 に答える