элементы сортировки в выпадающем списке без первого объекта

У меня есть следующий код для сортировки объектов в выпадающем списке:

function sortDropDownListByText(selectId) {
    $(selectId).html($(selectId + " option").sort(function(a, b) {
       return a.text == b.text ? 0 : a.text < b.text ? -1 : 1
    })) 
}

это хорошо работает кроме случаев, где в моем первом объекте я имею **, "Выберите и объект из списка" сообщение.. **

есть ли так или иначе, я могу отсортировать объекты в списке выборки и сохранить, "Выберите запись" как первый объект в списке всегда?

Править:

В ответ на некоторые ответы "Выберите объект, всегда имеет значение 0"

14
задан leora 12 January 2010 в 12:22
поделиться

5 ответов

function sortDropDownListByText(selectId) {
    var foption = $('#'+ selectId + ' option:first');
    var soptions = $('#'+ selectId + ' option:not(:first)').sort(function(a, b) {
       return a.text == b.text ? 0 : a.text < b.text ? -1 : 1
    });
    $('#' + selectId).html(soptions).prepend(foption);              

};

- это ваша функция.

32
ответ дан 1 December 2019 в 07:39
поделиться

Извлеките первый элемент из поля выбора и добавьте его в первую позицию после функции сортировки.

$(selectId).html($(selectId + " option:not(':first-child')").sort(function(a, b) {
       return a.text == b.text ? 0 : a.text < b.text ? -1 : 1
    }))
0
ответ дан 1 December 2019 в 07:39
поделиться

Теоретически, я бы подошел к проблеме, удалив запись "Пожалуйста, выберите", отсортировав список, а затем добавив его снова, как только сортировка будет завершена

.
3
ответ дан 1 December 2019 в 07:39
поделиться

Если параметр «Пожалуйста, выберите ...» имеет определенное значение (здесь называется «DummyVal») С этим вы можете использовать это в вашей функции сравнения:

function sortDropDownListByText(selectId, dummyVal) {
    $(selectId).html($(selectId + " option").sort(function(a, b) {
        if (a.value == dummyVal) {
            return -1;
        }
        return a.text == b.text ? 0 : a.text < b.text ? -1 : 1
    })) 
}
0
ответ дан 1 December 2019 в 07:39
поделиться

Как насчет всегда возвращаться -1 для этого элемента?

$(selectId).html($(selectId + " option").sort(function(a, b) {
   return a.text == "Please select an item from the list" ? -1 : a.text < b.text ? -1 : 1;
});

Более динамично:

$(selectId).html($(selectId + " option").sort(function(a, b) {
   return a.text == $(selectId + 'option:first').text ? -1 : a.text < b.text ? -1 : 1;
});
0
ответ дан 1 December 2019 в 07:39
поделиться
Другие вопросы по тегам:

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