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

Posted

技术标签:

【中文标题】jQueryFileTree 如何清除实例、重新实例化新实例或刷新【英文标题】:jQueryFileTree How to clear instance, reinstantiate new instance or refresh 【发布时间】:2016-04-08 11:13:21 【问题描述】:

我正在使用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('');

我尝试过属于其他小部件类型库的命令,例如“销毁”或“刷新”:

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

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

这些要么什么都不做,要么返回一个 js 错误。

【问题讨论】:

【参考方案1】:

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

if (!data) 

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

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

【讨论】:

我还在这个项目中,所以让我在标记为选定答案之前测试这个答案。 希望对您有所帮助。我不是 JS 大师,所以可能有更好的方法来做到这一点,但对我来说它达到了它的目的:)

以上是关于jQueryFileTree 如何清除实例、重新实例化新实例或刷新的主要内容,如果未能解决你的问题,请参考以下文章

哪个更快:清除集合或实例化新的

如何在重新加载时清除 UICollectionViewCell?

如何清除视图中的所有数据并重新加载?

如何在重新绘制之前清除 QwtPlot 曲线?

如何检测 jQuery 灯光滑块是不是已实例化,如果是,如何清除实例

如何在 ubuntu 上彻底清除并重新安装 postgresql? [关闭]