2
var ccArray = [];
ccArray = $("input:checkbox[name='multiselect_ddlCC']").sort();

配列に必要な値を取得していることはわかりますが、sort() の実行後、配列の順序は変更されますが、アルファベット順ではありません。ENG、ATL、NAS、CLT、BIM などを取得します。

何か案は?

4

6 に答える 6

5

DOM 要素を並べ替えて、再度追加する必要があります。

var $els = $("input:checkbox[name='multiselect_ddlCC']");

var $sorted = $($els.toArray().sort(function(a, b) {
  return a.value > b.value;
}));

$els.replaceWith($sorted);

編集:テストreplaceWithしたところ、うまくいきませんでした。これはうまくいきます:

$els.each(function(i) {
  $(this).after($sorted.eq(i));
});

デモ: http://jsbin.com/agizoy/1/edit

于 2013-01-28T21:03:36.770 に答える
2

入力値を実際に比較する必要があります。これらは文字列であるため、使用する必要がある<>、減算が適切に機能しません。

.sort(function (a, b) {
    if ($(a).val() < $(b).val()) {
       return -1;
    }
    else {
       return 1;
    }
});

http://jsfiddle.net/cdMBW/

于 2013-01-28T21:06:04.723 に答える
1

文字列ではなく、jQuery でラップされた HTML 要素を並べ替えています。ソートされた順序で、それらのどれが別の前に来るか誰が知っていますか?

于 2013-01-28T21:03:03.840 に答える
0

それはうまくいくはずです:

jQuery.map(ccArray, function(item) { return item.value }).sort()
于 2013-01-28T21:17:17.780 に答える
0

また、選択したチェックボックスの値を並べ替えたリストが必要な場合は、次のようにします。

var values = [];
$('input:checkbox[name='multiselect_ddlCC']:checked').each(function(i,e){
  values.push(e.value);
});
var sortedValues = values.sort();

例が含まれています

于 2013-01-28T21:12:55.923 に答える
-1

要素自体ではなく、.val() を使用して値を並べ替える必要があります。

var ccArray = [];
ccArray = $("input:checkbox[name='multiselect_ddlCC']").val().sort();
于 2013-01-28T21:03:04.497 に答える