2017-10-23 16 views
0

私はサーバーから実際にこのmessage_countデータを3分ごとに引き出し、それに応じて各プレーヤーの属性を更新するajax関数を持っています...今、divを自動的に取得したいmessage_count属性値に基づいてこのAjaxコールのあとにソートされます。メッセージが多い方は最初のdivになります。簡単属性値に基づいてdivをソートdiv(降順)

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);
<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>

+0

sort'代わりに 'reverse'すなわち' jQueryの(」。プレイヤー ")の使用は、'。見つける("。プレイヤー ")。ソート(ソーター).appendTo(" .players "); 関数ソーター(a、b){ return b.getAttribute( 'message_count') - a.getAttribute( 'message_count'); }; ' – Satpal

答えて

2

クエリを逆順にするだけです。

.sort(function(a, b){return b.getAttribute('message_count') - a.getAttribute('message_count')) 

var sortedDivs = jQuery(".players").find(".player").toArray().sort(function(a, b){return parseInt(b.getAttribute('message_count')) - parseInt(a.getAttribute('message_count'))}); 
 

 
jQuery.each(sortedDivs, function(index, value) { 
 
    jQuery(".players").append(value); 
 
});
<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>

+0

これはうまくいきました...ありがとうございました:) – user2301765

0
$('div').sort(function (a, b) { 

     var contentA =parseInt($(a).attr('message_count')); 
     var contentB =parseInt($(b).attr('message_count')); 
     return (contentA < contentB) ? -1 : (contentA > contentB) ? 1 : 0; 
    }) 
+0

数値ソートは、OPが実行しているのと同じ方法でvalueA-valueBを実行する方が簡単です – charlietfl

+0

コードのみの回答が問題を解決するかもしれませんが、問題の解決方法の説明は将来の問題を解決する方法を理解するのを助けます。 –

0

あなたはjavascriptのsort()メソッドを使用することができますがそれを行いますjqueryの.sortを使用して

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'); 
 
};
<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>

関連する問題