2009-10-07 18 views
0

我正在排序物種列表,但有時列表很大,需要幾秒鐘對它進行排序。因此,我嘗試添加一條小通知讓我們的用戶知道正在運行的東西(他們應該等待)。請檢查此頁面:http://ibc.lynxeds.com/family/babblers-timaliidae 然後點擊「排序和過濾[+]」。然後,點擊任何「排序」鏈接。jQuery排序函數凍結一個(前一個)顯示()文本

使用Opera,您將首先得到一條消息,然後開始對物種進行分類,然後將消息更改爲不同的文本,就這些了。使用FF或IE時,第一條消息不會顯示,並且您只知道CPU正在進行一些工作,然後執行「完成」。消息顯示並淡出。

所以,在最壞的情況下(慢CPU,大列表),你可能會等待20秒,然後你完成了!消息(它會好得多,以顯示「請稍候」第一,只是淡出完成時...)

調用排序功能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); 
     }); 

它的工作原理完美的歌劇。我不明白爲什麼在其他瀏覽器中沒有顯示第一條消息。

我能做些什麼來強制FF和IE在開始排序之前顯示「請稍候」消息?

一個相關的問題是如何加快排序(最大的家庭可能需要20秒,在我的core2duo ...)。

謝謝你的任何建議!

編輯:排序函數在這裏找到:stackoverflow.com/questions/1531176

回答

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一樣,我得到一個有關緩慢運行腳本的瀏覽器警告消息,我讓它運行並且完成。幾秒鐘後,我看到您發佈的警告消息。

+0

我會在本地嘗試,但預期的結果是什麼? – 2009-10-07 11:57:34

+0

使用ID會更快,並且會限制選擇,這樣做的目的是避免走遍整個DOM – 2009-10-07 12:00:29

+0

您也可以在速度上有所提升通過選擇背景 請參閱Brandon Aarons博客瞭解上下文選擇的一些細節: http://品牌onaaron.net/blog/2009/06/24/understanding-the-context-in-jquery – 2009-10-07 12:16:59

0

首先,什麼是您使用排序,即什麼是在sort()

其次,是否有一個回調函數可用於設置「完成!」排序完成後的消息?

第三,根據sort()中使用的排序算法,排序可能會加快。如果你能提供更多細節,我應該能夠進一步提供幫助。

+0

我添加了一個關於排序函數速度的新問題。我可以在15分鐘後發佈:) 我不確定第二個問題。你可以再詳細一點嗎?謝謝! – 2009-10-07 11:50:38

+0

顯示「Sorting,please wait」消息而不是「完成」消息更重要。 「完成」可以被刪除。第一個,如果更重要的話,或者用戶再次點擊,再次.. – 2009-10-07 11:53:23

+0

大多數插件允許你指定一個函數在函數完成時執行。這通常被稱爲回調函數。所以,如果'sort()'接受一個回調函數,那麼在這個函數中你會希望'$(「。warning」).text(「Sorting ... Done!」)。fadeOut(700);' – 2009-10-07 11:55:41

相關問題