2016-04-08 115 views
0

我正在使用jQuery FileTreejQueryFileTree如何清除實例,重新實例化新實例或刷新

$('#jstree').fileTree({ 
      script: '/ajax/file_tree2/' + path, 
      multiFolder: true, 
      expandSpeed: 250, 
      collapseSpeed: 250 
     }); 

...這產生了很好的圖形文件的樹,我可以按一下週圍:通過JavaScript AJAX文件上傳(老同學JavaScript的XMLHTTP請求,而不是jQuery的),我使用下面的代碼調用文件樹(path變量是新的文件夾,被用作一個URI段變量,並且我簡單地將服務器端連接器jQueryFileTree.php代碼複製到一個CodeIgniter控制器類的公共函數中,這是額外的信息,認爲這與問題有關,僅供參考)。

但是,由於某種原因,當我通過上傳新文件(無需重新加載頁面)進行第二次調用時,文件樹不會更新或刷新。當我爲不同文件夾上傳新文件時,我想刷新樹結構。

我試圖清除#jstree元素本身,使用裝載機GIF:

$('#jstree').html('<img src=\"'+$("#base_url").html()+'/assets_/images/loading/loading36.gif\" />'); 

...甚至只是清理的HTML:

$('#jstree').html(''); 

我試着命令它們是其他控件類型庫的一部分,如'destroy'或'refresh':

$('#jstree').fileTree.destroy(); 

$('#jstree').fileTree({ 
      refresh: true, 
      script: '/ajax/file_tree2/' + path, 
      multiFolder: true, 
      expandSpeed: 250, 
      collapseSpeed: 250 
     }); 

這些要麼不做任何事,要麼返回aj錯誤。

回答

1

我下載v2.1.4(467904a3ab5c13df094ffe01ddb0d0fea24c5d6a)的原料來源和修改行203:

if (!data) { 

if (!data || (Object.prototype.toString.call(args) === '[object Object]' && args.reload)) { 

現在,如果我要重新加載文件樹,我只是通過參數數組中的「reload:true」。

+0

我仍然在這個項目,所以讓我測試這個答案之前,標記爲選定的答案。 – TARKUS

+0

希望它會幫助你。我不是JS大師,所以可能有更好的方法來做到這一點,但對我來說它服務於它的目的:) – ixM