1

ここで非常に優れたソート機能に資金を提供してい ます jQueryを使用してリストをアルファベット順にソートするにはどうすればよいですか? たとえば、次のようなものがある場合、最初の文字のみでソートするように見えることを除いて、ほぼ完璧に機能します

0-5000
5001-10000
10001-15000
15001-20000

注文は次のようになります

0-5000
10001-15000
15001-20000
5001-10000

代わりは

0-5000
5001-10000
10001-15000
15001-20000

フォーム内のすべての選択に対して関数をやり直しました

var mylist = $('#myformid select');

$(mylist).each(function (sorter, elm) { 
  var listitems = $(this).children('option.myoptionclass').get();
   listitems.sort(function(a, b) {
      var compA = $(a).text().toUpperCase();
      var compB = $(b).text().toUpperCase();
      return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
   })
     $.each(listitems, function(idx, itm) { 
          $(this).parent().append(itm); 
      });

});

ここにライブの例があります

http://jsfiddle.net/sQsZQ/6/

どんな助けでも大歓迎です!

4

2 に答える 2

3

私はあなたのフィドルを編集しました:http://jsfiddle.net/CBD33/2/ が使用してparseIntいるので、比較は今次のようになります:

listitems.sort(function(a, b) {
  var compA = $(a).text().toUpperCase();
  var compB = $(b).text().toUpperCase();
  compA = (parseInt(compA,10) || compA)
  compB = (parseInt(compB,10) || compB)              


  return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
})

に指定された文字列値の最初の文字がparseInt数字の場合、最初の数字以外の文字まですべてを解析します。最初の文字が数字でない場合は、NaNが返されます。私の使用||はかなり怠惰ですが、あなたはより良い状態を思い付くことができると確信しています。

于 2012-07-16T02:14:15.777 に答える
1

このように並べ替える前に、文字列を数値に変換する必要があります

   var compA = parseInt($(a).text().split('-')[0]);
   var compB = parseInt($(b).text().split('-')[0]);

http://jsfiddle.net/sQsZQ/8/を参照してください

于 2012-07-16T02:13:54.240 に答える