按Java编号排序

时间:2018-10-13 16:10:03

标签: javascript

我有以下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]);

3 个答案:

答案 0 :(得分:0)

尝试将.attr(“ data-order”)更改为.data('order'),如下所示

.data()

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>