表格导航和行选择
我有一个 HTML 表格,其中包含大约 1000 行和 26 列。我正在使用 这个 jQuery 插件 在行之间导航并进行选择。
我的第一个问题是该插件工作正常,但是即使使用最新版本 (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);
});
请问有什么建议吗?
I have an HTML table which contains about 1000 rows and 26 columns. I am using this jQuery plugin to navigate between rows and make a selection.
My first problem is that the plugin is working fine, but—even using the latest version (0.6.1)—it's very slow when working with 1000 rows.
My second problem is that I want to create a JSON object representing the selected row from the table. I wrote a function that does this, but again it's too slow on such a big table. The following code works, but I want to optimise it:
$(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);
});
Any suggestions please?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以做的一件事是优化您的 jQuery 选择器以帮助 Sizzler 更快地工作......
不是对所有文档的 keyup 进行投标,而是对特定 tr 的 keyup 进行投标怎么样?
将选定的 tr 保存在循环之外,您要求 sizzler 通过循环 1000 行找到您的对象 26 次!
所以可能这样的东西会更快:
我还没有测试过。
你也可以直接创建一个 json 对象(虽然不会影响速度),就像这样
然后在循环内:
One thing you can do is optimize your jQuery selectors to help the Sizzler work faster...
instead of biding on keyup of all document, how about keyup of a specific tr?
Save the selected tr outside the loop, you're asking the sizzler to find your object 26 times by looping 1000 rows!
So probably something like this would be faster:
I have not tested this yet.
You can also create a json object directly (wouldn't affect how fast though), like this
Then inside a loop: