尝试一堆没有可行结果的解决方案。我有代码获取跨度的值并为LI创建一个ID。然后我想根据LI的ID对这些LI的DESCENDING进行排序。救命?谢谢!
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<ul id="dumb">
<li>cello<span>2987</span></li>
<li>zello<span>1723</span></li>
<li>aello<span>3476</span></li>
</ul>
<script type='text/javascript' src='JQUERY INCLUDE'></script>
<script type="text/javascript">
$(document).ready(function() {
$('ul li span').each(function(){
var pubValue = $(this).html();
$(this).parent().attr('id', pubValue);
});
});
</script>
</body>
</html>
答案 0 :(得分:11)
我们假设您的li nodes
有ID。
<ul id="test">
<li id="4112">blub</li>
<li id="1422">blaaah</li>
<li id="6640">hmmmm</li>
<li id="2221">one more</li>
</ul>
然后你可以调用javascripts本机数组.sort()
方法,因为jQuery包装集在Arrays
中保存:
$(function(){
var elems = $('#test').children('li').remove();
elems.sort(function(a,b){
return parseInt(a.id) > parseInt(b.id);
});
$('#test').append(elems);
});
答案 1 :(得分:4)
jAndy打败了我。这是我的。
$(function() {
$("li").sort(function(left, right) {
return parseInt($(left).attr("id")) - parseInt($(right).attr("id"));
}).each(function() { $("ul").append($(this)); });
});
我会补充说你需要
$(function() {
对于您的IE6用户,因为如果您尝试在加载父元素之前从dom中删除元素,IE6将会崩溃。
此外,.remove()是多余的,因为.append()负责处理。