【发布时间】:2009-10-07 11:53:44
【问题描述】:
我正在对
我的 jQuery 函数如下所示:
jQuery.fn.sort = function() {
return this.pushStack([].sort.apply(this, arguments), []);
};
function sortAscending1(a, b) { return $(a).find(".english").text() > $(b).find(".english").text() ? 1 : -1; };
function sortDescending1(a, b) { return $(a).find(".english").text() < $(b).find(".english").text() ? 1 : -1; };
我从下面的 jQuery 行调用它(s_alf_eng 是页面上的一个 clicable div)。
$(document).ready(function() {
$(".s_alf_eng").toggle(
function() {
$('.media-status-specie li').sort(sortAscending1).appendTo('.media-status-
},
function() {
$('.media-status-specie li').sort(sortDescending1).appendTo('.media-status-specie');
});
我可以快速提供任何额外的说明。 谢谢!
编辑:问题是对大列表执行这种排序需要几秒钟。在我的 core2duo 中,可能需要 20 秒!我将 find(".english") 更改为 filter(".english") ,速度似乎是一样的。关于如何加快速度的任何想法?
【问题讨论】:
-
有什么问题?代码使用 JavaScript 原生排序算法,我相信它几乎总是快速排序。
-
对不起,我忘记添加了!!这是最大的列表(家庭),当然也是最慢的:ibc.lynxeds.com/family/tyrant-flycatchers-tyrannidae
-
Opera 会显示一条消息,让您知道排序正在进行中,但 FF、IE 等仅在排序完成时显示该消息。这是一个相关的问题:stackoverflow.com/questions/1531064
标签: jquery performance sorting