Так что вариации этого были заданы, но я не могу найти то, что я ищу, или понять это сам. Вот код компоновки
<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
Ты можешь сделать
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);
});
надеюсь, что я помогу
Вы можете попробовать каждый цикл через каждый класс .original
:
/// define compare function
$('.original').each(function () {
var myArray = $(this).children('div');
myArray.sort(compare);
$(this).append(myArray);
}
Вам нужно перебирать все оригиналы отдельно:
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);
});
Просто игра в гольф !!! 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);
});