В моем приложении у меня есть поле выбора HTML, из которого я удаляю и добавляю элементы на основе различных действий пользователя (элементы становятся доступными/недоступными). Тем не менее, мне также хотелось бы, чтобы все элементы отображались в предпочтительном порядке, поэтому каждый раз, когда я возвращаю элемент в список выбора, мне нужно повторно отсортировать его в предпочтительном порядке и выбрать предпочтительный вариант. До сих пор я не увенчался успехом.Как я могу изменить порядок выбора списка на лету?
Это то, что я получил в настоящее время:
function update_select (select_id) {
// Rebuild given select box with appropriate options
var s = $(select_id);
s.empty();
for (index in order_by_kind(selectable)) {
var option = selectable[index];
var s_option = $('<option value="' + option.value + '">' + option.desc + '</option>')
s.append(s_option);
if (index == 0) {
s_option.attr('selected', true);
console.log(s_option);
}
}
}
Если я вхожу результаты order_by_kind()
, значение опции сортируется по желанию. Я очищаю содержимое списка и перестраиваю его в нужном порядке, но элемент всегда является последним в списке. Ведение журнала s_option
показывает, что параметр установлен как выбранный, но элемент никогда не выбирается в пользовательском интерфейсе. Что я могу сделать неправильно?
Edit:
Моя order_by_kind()
функция ниже, для тех, кто хотел бы убедиться, что он работает правильно:
function order_by_kind(obj_list) {
var tmp = [];
for (index in type_order) {
var kind = type_order[index];
for (obj_index in obj_list) {
var obj = obj_list[obj_index]
if (kind == obj.value) {
tmp.push(obj);
// break out of the inner loop
break;
}
}
}
return tmp
}
Это не похоже на работу. Я просто заканчиваю пустой первый элемент, с моими параметрами, все еще в неправильном порядке. – vezult
@vezult - Можете ли вы опубликовать свой метод 'order_by_kind', чтобы я мог сделать быстрый тест? Кроме того, вы всегда хотите просто выбрать первый элемент в списке после сортировки? –
Я действительно думаю, что нашел проблему (см. Мой ответ ниже), но я тоже опубликую это, только для полноты. Что касается второго вопроса; Да, если список упорядочен правильно, первым вариантом должен быть предпочтительный вариант. – vezult