@kirill-93

Как отсортировать список по двум параметрам?

Привет, есть список div'ов, в которых есть текст и дата-атрибут. Нужно отсортировать в первую очередь по наличию атрибута (значение не важно), а затем по алфавиту. То есть сначала должны идти по алфавиту блоки с атрибутом, затем по алфавиту блоки без атрибута.
$('.list').find('.list-item').sort(function(a, b) {
            var attrA     = $(a).attr('data-hit') ? 1 : 0;
            var attrB     = $(b).attr('data-hit') ? 1 : 0;
            var nameA  = $(a).text().trim().toLowerCase();
            var nameB  = $(b).text().trim().toLowerCase();

           return (nameA < nameB) ? -1 : (nameA > nameB) ? 1 : 0;
        }).appendTo($('.list'));

Такой код сортирует весь список по алфавиту, но как добавить условие для наличия атрибута никак не додумаюсь.
Подскажите, пожалуйста.
  • Вопрос задан
  • 166 просмотров
Решения вопроса 1
@kirill-93 Автор вопроса
$('.list').find('.list-item').sort(function(a, b) {
            var attrA     = $(a).attr('data-hit') ? '!!!!!!' : 'zzzzzz';
            var attrB     = $(b).attr('data-hit') ? '!!!!!!' : 'zzzzzz';
            var nameA  = attrA + $(a).text().trim().toLowerCase();
            var nameB  = attrB + $(b).text().trim().toLowerCase();

           return (nameA < nameB) ? -1 : (nameA > nameB) ? 1 : 0;
        }).appendTo($('.list'));

Вот такой костыль помог. При условии что в тексте только английские символы.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы