我有一个清单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。
答案 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/lab/jquery/demo/jquery_reverse_unordered_list.htm