【发布时间】:2011-04-22 10:01:37
【问题描述】:
我有一个包含大约 1000 行和 26 列的 HTML 表。我正在使用this jQuery plugin 在行之间导航并进行选择。
我的第一个问题是插件运行良好,但是即使使用最新版本 (0.6.1),它在处理 1000 行时也很慢。
我的第二个问题是我想创建一个 JSON 对象来表示从表中选择的行。我写了一个函数来做到这一点,但在这么大的桌子上又太慢了。以下代码有效,但我想对其进行优化:
$(document).bind("keyup", function(event) {
var jsonText = "";
var i = 0;
var td_size = $("tr.selected td").size();
jsonText += "{";
for (i = 0; i < td_size; i++) {
if (i < td_size - 1) {
if (i == 0) {
// Get link URL.
jsonText += "\"" + $("thead tr th").eq(i).text() + "\":\"" + $("tr.selected td").eq(i).find("a").attr("href") + "\",";
} else {
jsonText += "\"" + $("thead tr th").eq(i).text() + "\":\"" + $("tr.selected td").eq(i).text() + "\",";
}
}
else {
jsonText += "\"" + $("thead tr th").eq(i).text() + "\":\"" + $("tr.selected td").eq(i).text() + "\"";
}
}
jsonText += "}";
$('#content').html('').append(jsonText);
});
有什么建议吗?
【问题讨论】:
-
我认为任何 1000 行的脚本都会很慢。你有没有想过把桌子拆开一点?还是一次展示几块桌子?
-
数据已从视图而不是表中检索。问题不在于获取数据,因为我分析通过在数据集中循环检索记录和创建 HTML 表只需要两分钟,但大部分时间(大约 12-15 秒)已被插件和我拥有的代码占用创建以生成所选行的 JSON 对象。
-
假设我没有遗漏源代码中的任何内容,这个插件似乎存在一些性能问题:首先,它在 每一行 上绑定关键事件,而不是例如整张桌子;其次,它不是缓存表中的下一行,而是执行选择器查询。前者尤其会增加初始化时间和内存。
标签: javascript jquery asp.net json jquery-plugins