0

我有一个清单 EG

<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。

4

2 回答 2

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 方式。我怀疑它会比这个好得多。

于 2013-01-16T23:10:12.170 回答
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

于 2013-04-13T08:39:51.990 回答