2013-02-24 61 views
4

這是我的jsTree實例化代碼。jsTree對象沒有方法addBack

$("#folder_tree").jstree({ 
    "themes" : { 
     "theme" : "default", 
     "dots" : true, 
     "icons" : true 
    }, 
    "json_data" : { 
     "ajax" : { 
      "url" : "/portal/folders", 
      "data" : function(n) { 
       if ($(n[0]).find("a").attr("id")) { 
        console.log($(n[0]).find("a").attr("id").split('_')[1]); 
        return { 
         "id" : $(n[0]).find("a").attr("id").split('_')[1] 
        }; 
       } 
       return { "id" : "0" }; 
      } 
     } 
    }, 
    "plugins" : [ "themes", "json_data", "ui", "contextmenu", "dnd", "search", "crrm" ] 
}).bind("select_node.jstree", function(e,data) { 
    console.log(data.rslt.obj.context.id); 
}); 

它加載正確的第一次加載數據(0時),但後來當我點擊展開任何文件夾,這是給我的錯誤:

Uncaught TypeError: Object [object Object] has no method 'addBack' 

即使擴展節點的正確標識正在記錄到控制檯,並且正在向服務器發出ajax請求。還要注意,我必須使用相當可怕的kludge來查找元素的id,因爲記錄的代碼在嘗試訪問時爲我產生的只是錯誤(並且我使用的是與文檔相同版本的jsTree) n.attr("id")。此外,在bind("select_node"...下,我必須使用非文件化功能再次查找該ID。經過幾個小時的故障排除後,我仍然完全困惑,但顯然不能正常運行。

+4

您使用jQuery 1.8或更高版本嗎?直到那時才添加'addBack'。 – cdmckay 2013-02-24 22:51:38

+0

哇。謝謝。您。 – tufelkinder 2013-02-25 01:48:37

+0

我將其添加爲答案。 – cdmckay 2013-02-25 02:03:12

回答

12

確保您使用的是jQuery 1.8或更高版本。直到那時才加入addBack

+2

這個問題導致我的一個小時。感謝您的解決方案。 – Saurabh 2013-07-08 12:51:21