Страницы

Поиск по вопросам

среда, 12 июня 2019 г.

Сортировка блоков по возрастанию

Есть обычный список li. Каждый задан с определенной высотой. Нужно отсортировать эти блок по возрастанию. Пробовал localeCompare но сортирует немного некорректно. В чем проблема? Или я не совсем нужный метод выбрал?
jQuery(document).ready(function($) { var sortByHeight = function(a, b) { var a = parseFloat($(a).css('height')) + ''; var b = parseFloat($(b).css('height')) + ''; return a.localeCompare(b); } var list = $("li").clone(); list.sort(sortByHeight); for (var i = 0; i < list.length; i++) { $('#result').append(list[i]); } }); ul { list-style: none; height: 100px; float: left; display: block; } li { margin-right: 5px; background: green; width: 10px; float: left; }



    Ответ

    На самом деле вам не нужно использовать localeCompare в данном случае т. к. вы должны сравнивать числа, а не строки.
    jQuery(document).ready(function($) { var sortByHeight = function(a, b) { var a = $(a).height(); var b = $(b).height(); return a > b ? 1 : -1; }; var list = $("li").clone(); list.sort(sortByHeight); for (var i = 0; i < list.length; i++) { $('#result').append(list[i]); } }); ul { list-style: none; height: 100px; float: left; display: block; } li { margin-right: 5px; background: green; width: 10px; float: left; }


      Комментариев нет:

      Отправить комментарий