|
|
1
2
我能想到的一个优化是修改此代码:
为了代替一次追加一行,追加更大的块,或者尽可能全部追加。要做到这一点,您需要首先创建一个包含所有行的字符串,然后一次附加所有行。 使用array.push和array.join来concat字符串 |
|
|
2
5
您给出的示例有几个问题。第一个问题是在循环中使用jquery选择列。这是一个重大的性能惩罚。如果您对HTML代码有任何控制权,我建议您使用普通的DOM方法来获得想要排序的列。注意,有时当您可能期望一个表单元节点时,您可能会得到一个文本节点。我稍后再谈。for循环速度更快,因此您可以考虑使用它而不是$each,但我建议您对其进行基准测试。 我以您的示例为例,创建了一个包含1000行的表。我用了大约750毫秒在我的机器上排序。我做了一些优化(见下面的代码),并设法把它降到200毫秒,排序本身需要20毫秒左右(不错)。
当你为速度而写的时候,你希望每个迭代都尽可能快,所以不要在循环中做你可以在循环之外做的事情。例如,移动$table.children(“tbody”).get(0);在最后一个循环之外,会极大地加快速度。 至于使用dom方法访问列,您需要的是列索引,这样您就可以迭代第列,直到找到正确的列为止(前提是第个标记和td标记的HTML格式相同)。然后可以使用该索引获取正确的行子节点。 此外,如果表是静态的,并且用户有可能对其进行更多排序,那么应该缓存行,而不是删除sortkey属性。然后您可以节省大约30%的排序时间。还有表格内容的问题。如果内容是文本,那么这种排序方法就可以了。如果它包含数字等,那么您需要考虑一下,因为我使用的是localecompare,这是一种字符串类型的方法。 |
|
|
3
1
另一个性能改进: 不要使用$.每个,而是使用一个常规的for循环来代替它。规则的循环速度稍快。 此外,如果不是现在,这个博客文章可能会很有用,然后在将来: http://notetodogself.blogspot.com/2009/02/building-fast-jquery-plugins.html |
|
|
4
0
根据mkoryak的建议,我现在修改了代码,将行组装到一个数组中,然后一次附加它们:
这似乎提高了性能,大约25%——与之前的~4s相比,1500行的排序现在需要~3s。 |
|
|
5
0
我在使用 DataTables jQuery plugin 对于这种工作,我以前用过 YUI DataTable 组件。jquery datatables组件的1.5测试版包括从HTML代码实例化,或者使用Ajax数据源。它对于设置非常简单,对于筛选和排序数据来说非常快速。 我发现,一旦我输入了大约1600行相当冗长的内容,唯一的方法就是加载服务器端的数据。 |
|
|
6
-4
Tjena Ola! 这甚至可能与您的问题无关,但我们讨论了多少行?对于大量的行(数万张表)来说,速度非常慢。更轻量的解决方案是使用DIV和CSS来模拟表。它在语义上可能不正确(哈!同一短语中的表和语义,谁会想到呢?)但速度要快得多。 |
|
|
code-geek · Jquery根据单选按钮选择隐藏或显示文本字段 1 年前 |
|
|
Dr.0000FF · jQuery按钮点击不显示/隐藏内容 1 年前 |
|
|
user28928120 · 如何在jquery中选择所有类? 1 年前 |
|
Eliable · 使点击计数器和进度条协同工作 1 年前 |
|
Jack Maessen · 在处理程序上使用时如何获取输入类型 1 年前 |