Как отсортировать элементы списка с помощью настраиваемого порядка сортировки в jQuery

Мой вопрос очень похож на ряд других, которые я нашел на Stack Overflow, но не совсем то же самое.

Я хотел бы отсортировать элементы списка на основе содержимого диапазона, содержащегося в каждом элементе, но используя порядок сортировки, который я могу определить. Вот HTML-код примера элемента списка:

<li>
    <span class="fname">John</span>
    <span class="lname">Doe</span>
    <span class="year">Sophomore</span>
</li>

Я хочу отсортировать по содержанию "года", но в хронологическом порядке, а не в алфавитном порядке. Очевидно, что порядок должен быть следующим:

  • Первокурсник
  • Второкурсник
  • Младший
  • Старший

Как я могу это сделать?

Для справки, я использую следующий код jQuery ( который отлично работает) для сортировки в алфавитном порядке по фамилии:

function sortByLastName(){
    var myList = $('#foo ul');
    var listItems = myList.children('li').get();
    listItems.sort(function(a,b){
        var compA = $(a).find('.lname').text().toUpperCase();
        var compB = $(b).find('.lname').text().toUpperCase();
        return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
    });
    $(myList).append(listItems);
};
8
задан 40 Degree Day 6 July 2011 в 04:28
поделиться