2016-07-29 4 views
-1

Ich möchte meine Divs sortieren. Alle von ihnen teilen die gleiche Klasse. Hier ist der Code. Aber es funktioniert nicht.Bubble Art von Div basierend auf inneren Elementen

Script

function sort() { 
 
    for (var i = 0; i < $(".abc").length; ++i) { 
 
    for (var j = 0; j < $(".abc").length - i; ++j) { 
 
     var c1 = parseInt($(".abc").eq(j).children(".pop").text()); 
 
     var c2 = parseInt($(".abc").eq(j + 1).children(".pop").text()); 
 
     if (c1 > c2) { 
 
     var $temp = $(".abc").eq(j).(clone(true)); 
 
     $(".abc").eq(j) = $(".abc").eq(j + 1).(clone(true)); 
 
     $(".abc").eq(j + 1) = $temp; 
 
     } 
 
    } 
 
    } 
 
}

Der vollständige Code ist hier https://jsfiddle.net/4m8eneez/3/

Auch würde Sie mag etwas besseren Ansatz als dies wissen. Kann es mit jedem() vereinfacht werden? Bitte geben Sie einen Hinweis für Quicksort dieser Divs.

Thanx im Voraus :)

+1

Warum es erschweren? -> ** https: //jsfiddle.net/4m8eneez/1/** – adeneo

+0

Kein Mehrwert aber - https://youtu.be/k4RRi_ntQc8?t=48s :) – Dieter

+0

@adeneo sort() Funktion ist nicht erlaubt –

Antwort

1

Verwenden jQuery.sort Methode anstelle

function sort() { 
 
    var sorted = $('.abc').sort(function(a, b) { 
 
    return +b.textContent < +a.textContent; 
 
    }); 
 
    $('#wrapper').html(sorted); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<body> 
 
    <div id="wrapper"> 
 
    <div id="m1" class="abc"> 
 
     <span class="pop">2</span> 
 
    </div> 
 
    <div id="m2" class="abc"> 
 
     <span class="pop">3</span> 
 
    </div> 
 
    <div id="m3" class="abc"> 
 
     <span class="pop">1</span> 
 
    </div> 
 
    <div id="m4" class="abc"> 
 
     <span class="pop">7</span> 
 
    </div> 
 
    </div> 
 
    <br> 
 
    <button id="sort" onclick="sort()"> 
 
    Sort 
 
    </button> 
 
</body>

+0

Sir ich soll das tun ohne sort() Funktion –

+0

@SudhanshuSaini Du darfst jQuery benutzen, aber du darfst keine eingebaute Sortierung verwenden? Warum ... –

+0

Übrigens bin ich mir nicht sicher, ob '$ (...). Html (stuff)' tatsächlich 'stuff' in eine Zeichenkette umwandelt und sie als Fragment repariert, aber ich habe das immer angenommen hat getan. Wenn das der Fall ist, würde '$ ('# wrapper'). Leer(). Append (sortiert)' besser sein? –

Verwandte Themen