因此我们已经提出了这方面的变化,但我似乎无法找到我正在寻找或自己解决的问题。继承人布局代码
<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
答案 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);
});