Javascript 在JQuery中按数字对元素排序
如何使用jquery按属性amount中的值排列以下div?谢谢Javascript 在JQuery中按数字对元素排序,javascript,jquery,ajax,sorting,Javascript,Jquery,Ajax,Sorting,如何使用jquery按属性amount中的值排列以下div?谢谢 <a href="#" id="id1" class="lTest" amount="12"> <div>abcd1</div> <a/> <a href="#" id="id2" class="lTest" amount="64"> <div>abcd2</div> <a/> <a href="#" id="
<a href="#" id="id1" class="lTest" amount="12">
<div>abcd1</div>
<a/>
<a href="#" id="id2" class="lTest" amount="64">
<div>abcd2</div>
<a/>
<a href="#" id="id3" class="lTest" amount="32">
<div>abcd3</div>
<a/>
<a href="#" id="id4" class="lTest" amount="8">
<div>abcd4</div>
<a/>
abcd1
abcd2
abcd3
abcd4
试试这个:
var links = $('a.lTest').sort( function(a,b) { return $(a).attr('amount') - $(b).attr('amount'); } );
for ( var i = 1; i < links.length; i++ ) {
links.eq(i-1).insertBefore( links.eq(i) );
}
var links=$('a.lTest').sort(函数(a,b){return$(a.attr('amount')-$(b.attr('amount');});
对于(变量i=1;i
首先,假设标签被一个div(id=“testDiv”)包围
对不起,我最初的做法是错误的
不要这样做:坏了!!!(见下文编辑)
var testDiv=$(“#testDiv”);
var children=testDiv.children('.lTest');
每个(函数(){$(this.remove();});
var testArray=$.makeArray(子级);
testArray.sort(函数(a,b){
返回parseInt($(a).attr('amount'))-parseInt($(b).attr('amount');
}))
each(function(){testDiv.append(this);})
编辑:这是工作版本:
var testDiv = $('#testDiv');
var children = testDiv.children('.lTest').remove();
children = children.sort(function(a,b){
return parseInt($(a).attr('amount')) - parseInt($(b).attr('amount'));
});
testDiv.append(children);
这个应该有用
<!doctype html>
<html>
<head>
<script src='jquery.js'></script>
<script>
$(document).ready(init);
function init() {
var parent = $('#someid');
var children = $('a', parent);
children.sort(function(a, b) {
return parseInt($(a).attr('amount')) - parseInt($(b).attr('amount'));
})
$.each(children, function(i, child) {
parent.append(child);
});
}
</script>
</head>
<body>
<div id="someid">
<a href="#" class="lTest" amount="12"><div>abcd2</div></a>
<a href="#" class="lTest" amount="64"><div>abcd4</div></a>
<a href="#" class="lTest" amount="32"><div>abcd3</div></a>
<a href="#" class="lTest" amount="8"><div>abcd1</div></a>
</div>
</body>
</html>
$(文件).ready(初始化);
函数init(){
var parent=$('#someid');
变量子项=$('a',父项);
排序(函数(a,b){
返回parseInt($(a).attr('amount'))-parseInt($(b).attr('amount'));
})
$。每个(子项,函数(i,子项){
父。追加(子);
});
}
[编辑]替换为a以证明其工作正常。我已将abcdx中的x更改为预期顺序。您应该按此顺序结束abcd1、abcd2、abcd3和abcd4。您对Tinister答案的第一条评论表明您的测试页面对JQuery一无所知。请确保您在测试中正确地包含了JQuery,并且HTML是正确的正确构造。然后你可能会发现其他答案中的一个是有效的
John为什么在
标记中有
标记?嗨,链接将包含大量对象。这不应该对排序产生影响,是吗?它不应该产生影响,但是
通常被视为内联元素,而
是块级元素。你可能会得到一些有趣的结果浏览器试图呈现的havior.wtf是a标记中的amount参数。这不是有效的html。类似于此的锚标记必须包含符合规范的内联元素。我运行了代码,firebug告诉我$(“a.lTest”)。排序不是一个函数我已经能够在jQuery对象上很好地运行排序。如果尝试jQuery怎么办(“a.lTest”).sort(…)
?还是一样的错误,谢谢你的帮助,但它似乎不起作用。我认为这确实是一个愚蠢的问题。接受答案并坚持下去。根据我的意见。这里的每个答案都会起作用,但你无法测试它,也无法提供你真正需要的更多信息。并且在没有提供参数id的情况下执行一些jquery函数调用我永远不会工作。在你的代码中,我看到没有一个id,jusa$t一个类lTest。我已经测试了所有的建议,它们似乎都不起作用。但我接受了你的建议,并添加了id,如果这会有帮助的话。谢谢,但我用你建议的#testDiv中的元素运行了代码,但仍然不起作用。我无法找出我缺少了什么。Di你在你的系统上测试代码了吗?哎呀,糟糕,我之前写的东西都快用完了……我将用工作示例进行编辑。这似乎不起作用。考虑到一些有帮助的人发表了评论,但我还没能使任何代码正常工作,我假设我这边有问题。@BalusC,你测试过上面的代码吗我发布的标记。有效吗?谢谢。你以前关闭标记。这是错误的。请先修复它。谢谢,如果不是因为我的电脑出现了一些奇怪的问题,我相信其他示例也会有效。谢谢大家。