我有以下HTML项目类元素,以按数字降序排序。
<div id="main">
<div class="item" data-order="2">
<div class="stamp">13/10/2018 11:45 am EDT</div>
</div>
<div class="item" data-order="3">
<div class="stamp">13/10/2018 10:45 am EDT</div>
</div>
<div class="item" data-order="1">
<div class="stamp">12/10/2018 8:45 pm EDT</div>
</div>
<div class="item" data-order="0">
<div class="stamp">13/10/2018 10:43 am EDT</div>
</div>
由于某些原因,以下代码对我不起作用。我在排序时缺少什么?
var d = $('#main').sort(function (a, b) {
return $(a).find(".item").attr("data-order") < $(b).find(".item").attr("data-order");
});
console.log(d[0]);
答案 0 :(得分:0)
尝试将.attr(“ data-order”)更改为.data('order'),如下所示
var d = $('#main').children("div").sort(function (a, b) {
var difference = $(a).data('order') - $(b).data('order');
if(difference < 0)
return -1;
if(difference > 0)
return 1;
return 0;
});
console.log(d);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="main">
<div class="item" data-order="2">
<div class="stamp">13/10/2018 11:45 am EDT</div>
</div>
<div class="item" data-order="3">
<div class="stamp">13/10/2018 10:45 am EDT</div>
</div>
<div class="item" data-order="1">
<div class="stamp">12/10/2018 8:45 pm EDT</div>
</div>
<div class="item" data-order="0">
<div class="stamp">13/10/2018 10:43 am EDT</div>
</div>
答案 1 :(得分:0)
var d = $('#main .item').sort(function (a, b) {
return $(a).data("order") - $(b).data("order");
});
console.log(d);
答案 2 :(得分:0)
这样做:
<script type="text/javascript">
var items = document.querySelectorAll('.item');
var itemPos = [];
for(var i in items){
if(items.length > i){
itemPos.push(items[i].getAttribute('data-order'));
}
}
itemPos = itemPos.sort(function(a, b){return b - a});
<script>