【发布时间】:2012-03-13 16:20:02
【问题描述】:
这是关于jsTree jQuery plugin。我已经为此苦苦挣扎了一段时间才意识到这是 (本机)不可能做到,所以我想到了下面我的问题的以下解决方案(这不起作用)。
我有一棵将 json_data 插件与 ajax 一起使用的树。一旦你打开 一个特定的节点,来自服务器的结果是一个超过 1000 个的数组 json 节点。响应非常快,但渲染本身需要 一段时间(用户体验是他得到了烦人的“脚本不是 响应 - 停止脚本/继续”消息。
我想到的解决方案是限制从 服务器减少到一个较小的数字(比如 200)并使用一些“显示更多” 标签(或使用 jQuery 滚动事件)来获取下一个 200。 但是,在每个节点上使用 jstree.create 似乎是 非常慢。 然后我注意到这个线程on the jsTree google group Ivan 在其中建议可以使用一次创建所有节点 parse_json 函数 - 这对我不起作用。
我正在尝试做的简短代码 sn-p: (点击“显示更多”标签时):
$.ajax({
// send data to server in order to get the relevant json back
}(),
success : function (r) {
var parent_node = data.inst._get_parent(data.rslt.obj);
var id = parent_node.attr("id");
$("#root_tree").jstree("_parse_json", r, parent_node );
$("#root_tree").jstree("clean_node", parent_node, false);
}
});
上面的例子没有渲染 json 并将子元素添加到 父节点。
我非常感谢任何其他方法,或者如果有人可以指出 我做错了什么。 同样,使用:
$.each(r, function(i, node) {
var id = parent_node.attr("id");
$("#root_tree").jstree("create", "#"+id, "last", node, false, true);
});
确实有效,但非常非常慢(比渲染所有 1000 个节点慢 一起)。
谢谢
【问题讨论】:
-
根据 Ivan 的建议,这听起来像
_parse_json返回一个您可以附加的 DOM 树 (parent_node.append(result)?)。您是否深入研究过 JSON_DATA 插件源以了解该方法的实际作用?
标签: javascript jquery json jstree frontend