Javascript 在JQuery中按数字对元素排序

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="

如何使用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="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,你测试过上面的代码吗我发布的标记。有效吗?谢谢。你以前关闭标记。这是错误的。请先修复它。谢谢,如果不是因为我的电脑出现了一些奇怪的问题,我相信其他示例也会有效。谢谢大家。