Задать вопрос
@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'));

Такой код сортирует весь список по алфавиту, но как добавить условие для наличия атрибута никак не додумаюсь.
Подскажите, пожалуйста.
  • Вопрос задан
  • 167 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 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'));

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

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

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 15:00
300 руб./в час
18 дек. 2024, в 14:53
30000 руб./за проект
18 дек. 2024, в 14:45
25000 руб./за проект