2016-06-13 4 views
0

Ich habe ein Skript, das eine Liste von divs basierend auf ihrem Datenattribut sortiert. Die Sortierfunktionen sind an klickbare divs basierend auf ID gebunden. Momentan, wenn ich auf eines der divs klicke, werden die Objekte korrekt sortiert, aber nur einmal. Nach der Sortierung in aufsteigender Reihenfolge (nach oben) kann ich nicht nach absteigend sortieren, außer wenn ich die Seite aktualisiere. jsfiddle: https://jsfiddle.net/4ttjxwme/2/ Unten ist das Skript, jede Hilfe wird geschätzt!Sortieren onclick funktioniert nur einmal

<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

Pflege, um eine Probe zur Verfügung stellen? –

+0

Ich habe gerade einen JSFiddle-Link zum Beitrag hinzugefügt! – Tyharo

+0

Sie sortieren die DIVs in '.unsorted'. Aber du legst die sortierten DIVs in '.loadIndicators', so dass in' .unsorted' nichts mehr zu sortieren ist. – Barmar

Antwort

1

Da Sie jquery Objektreferenzen für die sortedArrays var sortedDivsDown = $(".unsorted").find("div").toArray().sort(sortDown);, zum zweiten Mal um die verwenden, ist .unsorted div Element leer und die Elemente sind jetzt in der .loanIndicators div.

Sie können dieses Problem beheben, indem Sie den unten Wähler mit den indicator div Elemente zu finden:

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

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

Dies wird in Ihrem Fall arbeiten, da alle Elemente in einem der beiden div-Elemente sein.

Hier ist eine funktionierende JSFiddle

+0

Genau das, was ich gesucht habe! Danke Neil! – Tyharo