Есть обычный список 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;
}
Комментариев нет:
Отправить комментарий