1

私はこの問題に何日も苦労してきました...

削除したいリーフ ノード (rel='default' のノード) を含むフォルダー (rel='folder' id のノード) を取得する必要があります。

私のサーバー側は、タイプに基づいてDBからノードを削除します。フォルダーの場合は問題ありませんが、リーフの場合、リーフを削除できるようにするには、コンテナー フォルダーの ID が必要です。

私はさまざまなシナリオを試しましたが、それらはすべて壊滅的で、undef または -1 を返しました。

最も一般的な方法でも:

(data.inst._get_parent(data.rslt.obj)==-1?'root_node':data.inst._get_parent(data.rslt.obj).attr('id'));

ツリーのどこからでも削除しようとしているすべてのリーフ ノードに対して常に -1 を返します。

ここにいくつかのコードがあります:

.bind("remove.jstree", function (e, data) {
    data.rslt.obj.each(function () {
         var node = data.rslt.obj;

         console.log('rel:'+node.parent("li[rel='folder']").attr("id")); // always undef
         var node2=$("#demo").jstree("_get_parent", data.rslt.obj.attr("id"));
         console.log("another try:"+node2.attr("id"));  always undef
         var node_parent=(data.inst._get_parent(data.rslt.obj)==-1?'root_node':data.inst._get_parent(data.rslt.obj).attr('id'));
         console.log('node_parent for ' + data.rslt.obj.attr("id") + ':'+node_parent);// always -1
         var parents = [];
        $(data.rslt.obj).parents('li').each(function () {
            parents.push({ id: $(this).attr("id"), description: $(this).children("a").text() });
        });
        console.log('nb of parents:'+parent.length); // always 0;
        $.ajax({
            async : false,
            type: 'POST',
            url: "ajaxTree.php",
            data : { 
                "operation" : "remove_node", 
                "id" : this.id.replace("node_",""),
                 "type" : data.rslt.obj.attr("rel"),
                 "parent": node_parent
            }, 
            success : function (r) {
                if(!r.status) {
                    //data.inst.refresh();
                    $.jstree.rollback(data.rlbk);
                }
            }
        });

    });
})

何がうまくいくと思うかメモを残してくれてありがとう、私はそれを試してみる、約束した:D

4

1 に答える 1

0
You can use "data.inst" - the tree instance 
and "_get_parent" to get the parent: 

data.inst._get_parent(data.rslt.obj); 

この情報はjstree グループにあります

于 2012-10-18T00:33:43.333 に答える