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

时间:2009-10-07 11:31:25

标签: jquery drupal sorting

我正在对物种列表进行排序,但有时列表很大,需要几秒钟才能对其进行排序。因此,我尝试添加一个小通知,让我们的用户知道有些东西正在运行(他们应该等待)。请查看此页: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秒)。

感谢您的任何建议!

编辑:排序功能在这里:stackoverflow.com/questions/1531176

2 个答案:

答案 0 :(得分:1)

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

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

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

或者,更好的是:

<ul id="media-status-specie" class="media-status-specie">

然后:

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

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

答案 1 :(得分:0)

首先,您使用什么来排序sort()中的内容?

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

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