2012-11-06 52 views
4

的項目我有我安排列表

<ul class="uol"> 
     <li>beta</li> 
     <li>gamma</li> 
     <li>alpha</li> 
</ul>​​​​​ 

我的一個同事(一個長假)的無序列表寫了一些代碼排序此列表。

$(".uol li").sort(asc).appendTo('.uol'); 

function asc(a, b){ 
    return ($(b).text()) < ($(a).text());  
} 


function desc(a, b){ 
    return ($(b).text()) > ($(a).text());  
}​ 

fiddle

我無法理解是什麼代碼做的,尤其是這行:

$(".uol li").sort(asc).appendTo('.uol'); 

誰能請解釋一下嗎?此外,這是對UOL進行排序的最佳方式,還是您知道的更好的方法?

+0

這可能是最好的方法。該行選擇列表項,使用命名的asc函數對它們進行排序,然後將它們附加到ul。 –

+0

您可以不使用未記錄的.sort方法來代替使用Array上的方法,但是這會使代碼變得不可讀。 –

+0

我剛剛爲另一個答案寫了'sort()'函數的詳細解釋。 [你可以在這裏閱讀它,如果你想深入的解釋。](http://stackoverflow.com/questions/3423394/algorithm-of-javascript-sort-function/13171179#13171179) – Aust

回答

2

$(".uol li")這給出.uol類中的所有li項。 .sort(asc)按升序進行排序。 .appendTo('.uol')。將結果追加到.uol類容器中。

+0

嗯有道理! –

0

.sort()是一個JavaScript函數,它使用傳遞給它的排序函數對數組進行排序。

他選擇通過的函數,檢查兩個相鄰值之間哪個文本的ASCII值較低。分類器將繼續在數組中的每兩個相鄰值之間運行此函數,直到它被排序爲止。