2012-08-26 49 views
1

我想顯示一個fancybox當用戶點擊創建按鈕讓他們填寫表單。這用於捕獲附加數據並將其與jsTree中新創建的節點相關聯。我需要獲取新創建的節點的ID,並在fancybox調用中將其作爲GET參數傳遞。到目前爲止,我似乎無法弄清楚如何獲得ID。如何從data.args獲取新創建的節點的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?

回答

1

這工作:

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

都能跟得上。未定義。 – compcentral

+0

data.args [0]返回什麼? –

+0

我編輯了這個問題給你看。 – compcentral

相關問題