jQuery排序函数冻结(上一个)show()文本

我正在对物种列表进行排序,但有时列表很大,需要几秒钟才能对其进行排序。 因此,我尝试添加一个小通知让我们的用户知道有些东西在运行(他们应该等待)。 请查看此页面: http : //ibc.lynxeds.com/family/babblers-timaliidae并单击“排序并过滤[+]”。 然后,单击任何“排序依据”链接。

使用Opera,您将首先收到消息,然后开始对物种进行排序,然后消息将更改为不同的文本,这就是全部。 使用FF或IE时,不显示第一条消息,您只知道CPU正在做一些工作,然后“完成!” 消息显示并淡出。

因此,在最坏的情况下(慢速CPU,大型列表),您可能需要等待20秒然后才能完成! 消息(首先显示“请稍候”,然后在完成时淡出…会好得多…)

调用sort函数的JQuery代码是这样的:

$(".s_alf_eng").toggle( function() { $(".warning").text("Sorting... please wait").show(); //warning is an empty div $('.media-status-specie li').sort(sortAscending1).appendTo('.media-status-specie'); $(".warning").text("Sorting... Done!").fadeOut(700); }, function() { $(".warning").text("Sorting... please wait").show(); $('.media-status-specie li').sort(sortDescending1).appendTo('.media-status-specie'); $(".warning").text("Sorting... Done!").fadeOut(700); }); 

它在Opera中非常完美。 我不明白为什么在其他浏览器中没有显示第一条消息。

在开始排序之前,我该怎么做才能强制FF和IE显示“请稍候”消息?

一个相关的问题是如何加快排序(对于最大的家庭,我的core2duo可能需要20秒)。

谢谢你的任何建议!

编辑:排序function在这里找到:stackoverflow.com/questions/1531176

就像测试一样,如果你改变会发生什么:

 $('.media-status-specie li').sort 

 $('.media-status-specie').find('li').sort.... 

或者,更好的是:

 

    然后:

      $('#media-status-specie').find('li').sort..... 

    就像一个FYI,我得到一个关于慢速运行脚本的浏览器警告消息,我让它运行并完成。 在我看到你发布的警告信息之前几秒钟。

    首先,您使用什么来排序,即sort()

    其次,是否有可用于设置“完成!”的回调函数。 排序完成后的消息?

    第三,根据sort()使用的排序算法,可以加快排序速度。 如果您能提供更多详细信息,我应该能够提供进一步的帮助。