jquery根据属性值排序div(降序)

use*_*765 1 html javascript jquery

我有一个 ajax 函数,它实际上每 3 分钟从服务器中提取一次 message_count 数据,并相应地更新每个玩家的属性......现在我想在这个 ajax 调用之后根据 message_count 属性值按降序自动对 div 进行排序。 ..所以收到更多消息的玩家将作为第一个div出现。

var sortedDivs = jQuery(".players").find(".player").toArray().reverse(sorter);
jQuery.each(sortedDivs, function(index, value) {
  jQuery(".players").append(value);
});

function sorter(a, b) {
  return a.getAttribute('message_count') - b.getAttribute('message_count');
};
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="players">
  <div class="player" message_count="8">8</div>
  <div class="player" message_count="2">2</div>
  <div class="player" message_count="0">0</div>
  <div class="player" message_count="1">1</div>
</div>
Run Code Online (Sandbox Code Playgroud)

Nik*_*aut 5

使用 jquery.sort很容易做到

var players = $(".players div");
var temp = players.sort(function(a,b){
  return parseInt($(b).attr("message_count")) - parseInt($(a).attr("message_count"));
});
$(".players").html(temp);
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="players">
  <div class="player" message_count="8">Div 8</div>
  <div class="player" message_count="2">Div 2</div>
  <div class="player" message_count="0">Div 0</div>
  <div class="player" message_count="1">Div 1</div>
 </div>
Run Code Online (Sandbox Code Playgroud)