使用jQuery重新排序有序列表

时间:2013-01-16 23:03:02

标签: jquery html

我有一个清单E.G

<ol>
  <li NumVotes="3">[Alot of HTML]</li>
  <li NumVotes="2">[Alot of HTML]</li>
  <li NumVotes="1">[Alot of HTML]</li>
</ol>

最初订购很好(C#LINQ),我有一个JS过滤系统,您可以更改显示的项目类型,因此我需要在过滤器更改后重新排序列表。我需要快速,所以简单地复制html()并不是一个选择。

我怎样才能做到这一点?

我查看了可排序的插件,但似乎只是让用户拖动LI。

2 个答案:

答案 0 :(得分:2)

一个简单的排序算法可以解决这个问题:

var myArray = $("ol li");

myArray.sort(function (a, b) {

    a = parseInt($(a).attr("NumVotes"), 10);
    b = parseInt($(b).attr("NumVotes"), 10);

    if(a > b) {
        return 1;
    } else if(a < b) {
        return -1;
    } else {
        return 0;
    }
});

$("#results").append(myArray);

这里有一个小提琴:http://jsfiddle.net/HU5ve/

如果性能确实是个问题,请使用a.getAttribute()而不是jqueryish方式。我怀疑它比这更好。

答案 1 :(得分:0)

找到一个关于如何使用jQuery反转有序列表的教程:

$(document).ready(function() {   

    var countli = $('ol > li').size();
    $("ol > li").each(function(i) {
        var attrvalue = countli - i;
        $(this).attr("value",attrvalue);
    });
});

从这里采取: http://www.designchemical.com/blog/index.php/website-coding/create-a-reverse-order-ordered-list-using-jquery/

演示: http://www.designchemical.com/lab/jquery/demo/jquery_reverse_unordered_list.htm