Как заказать (сортировать) список с числовым содержимым с помощью JQuery
у меня есть список как ниже, который создается динамически:
<ul>
<li>20</li>
<li>10</li>
<li>5</li>
<li>3</li>
<li>32</li>
<li>25</li>
<li>6</li>
<li>12</li>
<li>8</li>
</ul>
можно ли заказать этот список с помощью JQuery? Мне нужно, чтобы он был упорядочен от Нижнего к большему, вот так:
<ul>
<li>3</li>
<li>5</li>
<li>6</li>
<li>8</li>
<li>10</li>
<li>12</li>
<li>20</li>
<li>25</li>
<li>32</li>
</ul>
Спасибо за любую помощь!
6 ответов
ниже следует сделать трюк,
$(function () {
var liContents = [];
$('ul li').each (function () {
liContents.push(parseInt($(this).text(), 10));
});
liContents.sort(numOrdDesc);
$('ul li').each (function () {
$(this).text(liContents.pop());
});
});
function numOrdDesc(a, b){ return (b-a); }
var li = $('ul li');
li.sort(function(a, b) {
if(parseInt($(a).text()) > parseInt($(b).text()))
return 1;
else return -1;
});
$('ul').empty().html(li);
$(function(){
var elems = $('ul').children('li').remove();
elems.sort(function(a,b){
return parseInt($(a).text()) > parseInt($(b).text());
});
$('ul').append(elems);
});
var listItems = [];
$("#list li").each(function() {
listItems.push(parseInt($(this).text()));
});
listItems.sort(function(a,b){return a - b});
$("#list").html("");
$.each(listItems, function(i, v) {
$("#list").append($("<li>" + v + "</li>"));
});
используя sortContent плагин ,все будет легко,очистить и готов к повторному использованию:
$('ul').sortContent({helper:myhelper});
известно, что :
myhelper=function(e){
return $('a',$(e)).attr('href');
}
демо
Если вы хотите открыть для себя другие варианты, посетите Домашняя страница плагина