2010-03-23 10 views
7

Ich versuche, eine etwas komplexe Sortierfunktion zu erstellen, die weder Divs noch Listen verwendet. Leider haben mir zwei Stunden Googeln nicht geholfen.jQuery: Sortieren von Divs nach Inhalt von verschiedenen Subdivs

Hier ist die grundlegende Setup meines HTML:

      <div id="all_elements"> 

       <!-- one element --> 
       <div class="element"> 
        <div class="wrapper"> 
        <a href="/" title="links"> 
        <img src="/img/image.jpg" border="0" alt="image" class="image" /></a> 
        <div class="details"> 
         <h3><a href="/" title="title">Name (Sort Argument 1)</a></h3> 
         <div class="title"><a href="/" title="title">Title (Sort Argument 2)</a></div> 
         <div class="year">2010 (Sort Argumentt 3)</div> 
         <div class="country">Great Britain (Sort Argument 4)</div> 
        </div><!-- details --> 
        </div><!-- wrapper --> 
       </div><!-- element --> 

      </div> <!--all_elements--> 

Die Einrichtung ist ein wenig komplex, aber im Grunde .Element ist das Element, das alphabetisch sortiert werden muss, entweder gemäß dem Inhalt von h3, div. Titel, div.year oder div.country. So kann der Benutzer den Inhalt der Website entweder nach Namen, nach Jahr, nach Land oder Titel anzeigen.

Ich habe dieses jQuery-Schnipsel von einer Website, aber alle meine Versuche zu versuchen, es zu sagen, um den Inhalt von z. h3 zum Sortieren ist fehlgeschlagen. Gerade jetzt sortiert es ziemlich zufällig.

Wie kann ich die Funktion anpassen, um den Inhalt meiner h3 oder divs zu sortieren?

+0

Sollte wirklich nicht, dass auf der Serverseite statt der Client-Seite getan werden? Ich denke du versuchst dich zu sehr auf jQuery zu verlassen. – animuson

+1

In diesem Fall werden viele Objekte mit Bildern angezeigt, die neu geladen werden müssten, wenn die Sortierung auf der Serverseite erfolgen würde. Es wäre viel bequemer für den Benutzer, in der Lage zu sein, die Seite zu sortieren, ohne alle Objekte immer wieder aktualisieren und laden zu müssen, selbst wenn das JavaScript eine Weile braucht, um es neu zu sortieren. – rayne

Antwort

8

statt diese Vergleichsfunktionen Versuchen:

function sortAscending(a, b) { 
    return $(a).find("h3").text() > $(b).find("h3").text() ? 1 : -1; 
}; 
function sortDescending(a, b) { 
    return $(a).find("h3").text() < $(b).find("h3").text() ? 1 : -1; 
}; 
Verwandte Themen