jQueryFileTree如何清除实例,重新实例化新实例或刷新

时间:2016-04-08 11:13:21

标签: javascript jquery filetree

我正在使用jQuery FileTree。通过javascript ajax(旧学校javascript xmlhttp请求,而不是jQuery)上传文件后,我使用以下代码调用fileTree:

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

...它产生了一个很好的图形文件树,我可以点击它(path变量是新文件夹,用作URI段变量,我只是简单地复制了服务器-side将jQueryFileTree.php代码连接到CodeIgniter控制器类中的公共函数。这是我认为与此问题无关的额外信息,仅供参考。

但是,出于某种原因,当我通过上传新文件进行第二次调用(无需重新加载页面)时,文件树不会更新或刷新。我想在上传不同文件夹的新文件时刷新树结构。

我尝试使用加载程序gif清除#jstree元素本身:

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

......甚至只是清除html:

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

我尝试过的命令属于其他窗口小部件类库,例如&#39; destroy&#39;或者&#39;刷新&#39;:

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

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

这些都不做任何事情或返回js错误。

1 个答案:

答案 0 :(得分:1)

我从以下网址下载了v2.1.4(467904a3ab5c13df094ffe01ddb0d0fea24c5d6a)的原始来源和修改后的第203行:

if (!data) {

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

现在,如果我想重新加载fileTree,我只需在arguments数组中传递“reload:true”。