2016-06-13 6 views
0

データ属性に基づいてdivのリストをソートするスクリプトがあります。ソート関数は、IDに基づいてクリック可能なdivに結び付けられます。現在、divのいずれかをクリックすると、アイテムは正しくソートされますが、一度だけソートされます。昇順で並べ替えた後(上)、ページを更新しない限り降順で並べ替えることができません(下)。 jsfiddle:https://jsfiddle.net/4ttjxwme/2/ 以下はスクリプトですが、何か助けていただければ幸いです!onclickは1回だけソートします

<script> 
     $(document).ready(function() { 
      $("#down").on('click', function(){ 
       var sortedDivsDown = $(".unsorted").find("div").toArray().sort(sorterDown); 
       $.each(sortedDivsDown, function (index, value) { 
        $(".loanIndicators ").append(value); 
       }); 
       function sorterDown(b, a) { 
        return b.getAttribute('rel') - a.getAttribute('rel'); 
       }; 
      }); 
     }); 

     $(document).ready(function() { 
      $("#up").on('click', function(){ 
       var sortedDivsUp = $(".unsorted").find("div").toArray().sort(sorterUp); 
       $.each(sortedDivsUp, function (index, value) { 
        $(".loanIndicators ").append(value); 
       }); 
       function sorterUp(a, b) { 
        return a.getAttribute('rel') - b.getAttribute('rel'); 
       }; 
      }); 
     }); 
    </script> 
+0

サンプルを用意してください。 –

+0

投稿にjsfiddleリンクを追加しました! – Tyharo

+0

DIVを '.unsorted'でソートしています。しかし、ソートされたDIVを '.loadIndicators'に入れているので、ソートするために' .unsorted'の中に何も残っていません。 – Barmar

答えて

1

あなたがsortedArrays var sortedDivsDown = $(".unsorted").find("div").toArray().sort(sortDown);のためのjQueryオブジェクト参照を使用しているので、周りに二回目は、.unsorted div要素は空で、要素が.loanIndicatorsのdivになりました。

あなたはindicator div要素を見つけるには、以下のセレクタを使用することによってこの問題を解決することができます:すべての要素が2つのdiv要素のいずれかになりますので、これは、あなたのケースで動作します

var sortedDivsDown = $(".unsorted,.loanIndicators").find("div").toArray().sort(sortDown); 

var sortedDivsUp = $(".unsorted,.loanIndicators").find("div").toArray().sort(sortUp); 

を。

ここでは動作していますJSFiddle

+0

私が探していたもの!ありがとうNeil! – Tyharo

関連する問題