我使用Ludo van den Boom的treeTable jquery插件将表格表示为可扩展树。一旦我的数据集变大,Firefox和IE就会在$(document).ready中执行对插件的调用时超时。
该插件的公共方法是:
$.fn.treeTable = function(opts) {
options = $.extend({}, $.fn.treeTable.defaults, opts);
return this.each(function() {
$(this).addClass("treeTable").find("tbody tr").each(function() {
// Initialize root nodes only whenever possible
if (!options.expandable || $(this)[0].className.search("child-of-") == -1) {
initialize($(this));
}
});
});
};
它来自:
$(document).ready(function() {
$(".reportTable").treeTable();
});
其中reportTable是一个相当大的表的类。 initialize是一个递归调用。
可以修改它以避免浏览器给出的超时时间吗?我已经看到了使用setTimeout的参考(参见问题#779379),但我不确定如何应用它。
答案 0 :(得分:1)
从setTimeout或setInterval调用的任何函数都在主循环外部运行,因此不会阻止其他脚本。它很简单:
window.onload = function(){setTimeout("your_function()",0)}
答案 1 :(得分:0)
您使用的数据集有多大?树中有多少个节点?它有多少根节点?
您可能需要查看treeTable插件的2.2.2版本,该插件应该可以更快地初始化大型树。此版本可以在plugin's project page下载。