Сортировка групп дивов

0

Так что вариации этого были заданы, но я не могу найти то, что я ищу, или понять это сам. Вот код компоновки

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

То, что я хочу сделать, это иметь возможность сортировать div внутри каждого ".original" div, а затем возвращать их в div, где они начинаются

Heres мой текущий код сортировки:

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 с одним и тем же классом и только возвращало им divs, которые были в них, чтобы начать.

Чтобы быть ясным, мой желаемый результат:

<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 ответа

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

Вы можете попробовать каждый цикл через каждый класс .original:

/// define compare function

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

    myArray.sort(compare);
    $(this).append(myArray);
}
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);

});
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);    
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню