2012-04-03 17 views
2

このコードでは、title属性に関連して順序付けられていないリストを並べ替えることができます。Chromeで並べ替えられていないリストのリスト項目を並べ替える

$('#list li').sort(function(a,b) { 
    return $(a).attr('title') < $(b).attr('title'); 
}).appendTo('#list'); 

それはFirefoxとIEの素晴らしい作品が、それは、すぐにリストの要素数が10を超えるとChromeで失敗する(http://jsbin.com/atoput/4を参照)

は上の要素をソートするのより良い/より簡単に/より高速な方法がありますあなたはおそらくクロムがここで何をしているのかの説明を持っていますか?

答えて

4

この使用:プレビューhereを見ることができます

$(document).ready(function() { 
    var list = $('#list'); 
    var items = list.children('li').get(); 
    items.sort(function(a, b) { 
    var A = a.title; 
    var B = b.title; 
    return (A < B) ? -1 : (A > B) ? 1 : 0; 
    }); 
    $.each(items, function(idx, itm) { list.append(itm); }); 
}); 

を。

リストが降順に基づいてソートする場合は、サイン周りのスイッチ:

return (A > B) ? -1 : (A < B) ? 1 : 0; 
+0

私はこれが動作することができますどのように表示されません。 'items'は' .appendTo() 'メソッドを持たない配列です。 – jfriend00

+0

あなたは正しいです、申し訳ありません。私の答えを更新しました – hohner

+2

私が変更しようとしていたことは、 'a.title'がうまくいくときに、ずっと遅い' $(a).attr( 'title') 'を使う理由です。 – jfriend00

関連する問題