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?