У меня есть jQuery, но я не уверен, имеет ли он каких-либо встроенных помощников сортировки. Я мог сделать 2-й массив каждого объекта text
, value
, и selected
свойства, но я не думаю, что JavaScript встроил Array.sort()
работал бы правильно.
Извлечь параметры во временный массив, отсортировать, а затем перестроить список:
var my_options = $("#my_select option");
var selected = $("#my_select").val();
my_options.sort(function(a,b) {
if (a.text > b.text) return 1;
if (a.text < b.text) return -1;
return 0
})
$("#my_select").empty().append( my_options );
$("#my_select").val(selected);
Документация сортировки Mozilla (в частности, функция compareFunction) и страница алгоритма сортировки Википедии являются
Если вы хотите сделать сортировку нечувствительной к регистру, замените text
на text.toLowerCase ()
Функция сортировки, показанная выше, показывает, как сортировать. Точная сортировка неанглийских языков может быть сложной (см. алгоритм сопоставления Unicode ). Использование localeCompare в функции сортировки является хорошим решением, например:
my_options.sort(function(a,b) {
return a.text.localeCompare(b.text);
});