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

jQueryFileTree How to clear instance, reinstantiate new instance or refresh

本文关键字:实例 实例化 新实例 刷新 清除 何清除 jQueryFileTree      更新时间:2024-03-19

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

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

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

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

我试图使用加载器gif:清除#jstree元素本身

$('#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
        });

它们要么什么都不做,要么返回一个js错误。

我下载了v2.1.4的原始源代码(467904a3ab5c13df094ffe01ddb0d0fea24c5d6a),并从修改了第203行

if (!data) {

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

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