对div组进行排序

时间:2014-04-30 13:58:26

标签: javascript jquery

因此我们已经提出了这方面的变化,但我似乎无法找到我正在寻找或自己解决的问题。继承人布局代码

<div class="original">
<div timestamp="1100">1100</div>
<div timestamp="1000">1000</div>
<div timestamp="100">100</div>
<div timestamp="1530">1530</div>
</div>

<div class="original">
<div timestamp="1500">1500</div>
<div timestamp="700">700</div>
<div timestamp="730">730</div>
<div timestamp="700">700</div>
</div>

我想要做的是能够对每个&#34;。原始&#34;内部的div进行排序。 div然后将它们返回到他们开始的div

下面是我当前的排序代码:

var myArray = $(".original div");

function compare(a, b) {
    a = parseInt($(a).attr("timestamp"), 10);
    b = parseInt($(b).attr("timestamp"), 10);
    if(a > b) {
        return 1;
    } else if(a < b) {
        return -1;
    } else {
        return 0;
    }
}

myArray.sort(compare);
$(".original").append(myArray);

所以如果它只是一个带有原始类的div,但是我希望这可以在一堆具有相同类的div上工作,并且只返回它们内部的div开始。

要明确我想要的结果是这样的:

<div class="original">
<div timestamp="100">100</div>
<div timestamp="1000">1000</div>
<div timestamp="1100">1100</div>
<div timestamp="1530">1530</div>
</div>

<div class="original">
<div timestamp="700">700</div>
<div timestamp="700">700</div>
<div timestamp="730">730</div>
<div timestamp="1500">1500</div>
</div>

继承人jsfiddle

4 个答案:

答案 0 :(得分:1)

你可以做到

 function compare(a, b) {
           a = parseInt($(a).attr("timestamp"), 10);
           b = parseInt($(b).attr("timestamp"), 10);
           if(a > b) {
               return 1;
           } else if(a < b) {
               return -1;
           } else {
               return 0;
           }
       }
$(".orginal").each(function(){

   var myArray = $("div", $(this));
   myArray.sort(compare);
   $(this).append(myArray);
});

希望我帮助

答案 1 :(得分:1)

您可以尝试通过每个.original类的每个循环:

/// define compare function

$('.original').each(function () {
    var myArray = $(this).children('div');

    myArray.sort(compare);
    $(this).append(myArray);
}

答案 2 :(得分:0)

你需要分别遍历每一个原文:

var myOriginals = $("div.original");

myOriginals.each(function(){
    var myArray = $("div", this);
    alert(myArray);
function compare(a, b) {
    a = parseInt($(a).attr("timestamp"), 10);
    b = parseInt($(b).attr("timestamp"), 10);
    if(a > b) {
        return 1;
    } else if(a < b) {
        return -1;
    } else {
        return 0;
    }
}

myArray.sort(compare);
$(this).append(myArray);

});

答案 3 :(得分:0)

打高尔夫! DEMO

function compareX(a, b) { 
  a = $(a).attr("timestamp");
  b = $(b).attr("timestamp"); 
  return ~~a - ~~b;
}
$(".original").each(function(){
  var t = $(this);   
  var myArray = t.children();
  myArray.sort(compareX);
  t.append(myArray);    
});