2012-10-15 103 views
1

我一直在努力解決這個問題,現在天的包含文件夾...jstree:無法獲取葉節點

我需要的文件夾相對的(節點=「文件夾」身份證巫包含我的服務器端根據類型從數據庫中刪除節點。對於文件夾,對葉子來說不是問題,我需要將容器文件夾的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); 
       } 
      } 
     }); 

    }); 
}) 

感謝留下一張紙條,你認爲什麼可以工作,我來試試,promissed:d

+0

爲什麼不添加「容器」ID到你的葉子?只是一個快速的想法。 – Radek

+0

這可能是一個選項。我可以修改id以包含父文件夾的id,例如'node_123_parent_321',但這意味着所有ajax調用的重複使用,其中id使用像create_node,delete_node等等。使用og regexp來獲取這兩個值是必需的。 – sleblanc

+0

您是否從https://groups.google.com/forum/?fromgroups=#!topic/jstree/嘗試了https://groups.google.com/forum/?fromgroups =#!topic/jstree/wHIT4gIdcIY' wHIT4gIdcIY – Radek

回答

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

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

此信息在jstree groups

發現