Как заказать (сортировать) список с числовым содержимым с помощью 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);

есть плагины jQuery для обработки этого. Проверьте TinySort


$(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>"));
});

см.:http://jsfiddle.net/46J5u/1/


используя sortContent плагин ,все будет легко,очистить и готов к повторному использованию:

 $('ul').sortContent({helper:myhelper});

известно, что :

myhelper=function(e){
   return $('a',$(e)).attr('href');
}

демо


Если вы хотите открыть для себя другие варианты, посетите Домашняя страница плагина