Что самый эффективный путь состоит в том, чтобы отсортировать HTML Опции Выбора по значению при сохранении в настоящее время выбранный пункт?

У меня есть jQuery, но я не уверен, имеет ли он каких-либо встроенных помощников сортировки. Я мог сделать 2-й массив каждого объекта text, value, и selected свойства, но я не думаю, что JavaScript встроил Array.sort() работал бы правильно.

77
задан travis 5 September 2008 в 14:05
поделиться

1 ответ

Извлечь параметры во временный массив, отсортировать, а затем перестроить список:

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);
});
131
ответ дан 24 November 2019 в 10:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: