Sortiere eine HTML-Liste mit Javascript

8

Ich habe einen Satz von drei Listenelementen, die ich beim Laden der Seite automatisch von hoch nach niedrig anzeigen möchte. Idealerweise mit jquery oder javascript.

%Vor%

Jedes Listenelement benötigt eine eigene ID, da jedes einzelne Hintergrundbilder enthält. Die Nummern müssen Textknoten enthalten, damit ein Benutzer sie bearbeiten kann.

    
danssker 12.01.2012, 15:01
quelle

11 Antworten

11

Dies ist wahrscheinlich der schnellste Weg, dies zu tun, da jQuery nicht verwendet wird:

%Vor%

Rufen Sie die Funktion wie folgt auf:

%Vor%

Sie können andere Listen auf die gleiche Weise sortieren, und wenn Sie andere Elemente auf der gleichen Seite mit der Listenklasse haben, sollten Sie Ihrem UL eine ID geben und sie stattdessen übergeben.

Beispiel JSFiddle

Bearbeiten

Da Sie erwähnt haben, dass Sie wollen, dass es auf pageLoad passiert, nehme ich an, dass es so schnell wie möglich passieren soll, nachdem die ul im DOM ist, was bedeutet, dass Sie die Funktion sortList zum Kopf Ihrer Seite hinzufügen und verwenden sollten Es ist sofort nach deiner Liste so:

%Vor%     
Paulpro 12.01.2012, 15:09
quelle
6

Sie können dieses leichtgewichtige jquery-Plug-in List.js verwenden,

  1. es ist leicht [nur 3K Skript]
  2. einfach in Ihrer vorhandenen HTML-Tabelle mit der Klasse
  3. zu implementieren
  4. suchbar, sortierbar und filterbar

HTML

%Vor%

JavaScript

%Vor%     
AbdullahDiaa 03.08.2012 14:34
quelle
5

Sie können dies versuchen

%Vor%

Live-Beispiel: Ссылка

    
Francis 12.01.2012 15:07
quelle
3

Dieser Code sortiert die Liste unter der Annahme, dass nur ein .list -Element vorhanden ist:

%Vor%

Sie können sehen, dass es hier funktioniert: Ссылка

Um zu erklären, wie es funktioniert:

  1. Es wird das .list-Elternobjekt erhalten.
  2. Es findet alle <li> untergeordneten Objekte.
  3. Er entfernt alle untergeordneten Objekte <li> aus dem DOM, behält jedoch ihre Daten bei
  4. Es sortiert die li-Objekte mit einer benutzerdefinierten Sortierfunktion
  5. Die benutzerdefinierte Sortierfunktion ruft den HTML-Code im li-Tag ab und konvertiert ihn in eine Zahl
  6. Dann wird jedes li-Tag, nachdem es das Array in der neu sortierten Reihenfolge durchlaufen hat, an das ursprüngliche übergeordnete Element angefügt.

Das Ergebnis ist, dass sie in sortierter Reihenfolge angezeigt werden.

Bearbeiten:

Diese verbesserte Version wird sogar mehrere Listenobjekte gleichzeitig sortieren:

%Vor%

Demo: Ссылка

    
jfriend00 12.01.2012 15:19
quelle
3

Es gibt auch dieses kleine jQuery-Plugin . Was würde deine Sortierung nicht mehr als:

%Vor%     
Sjeiti 06.02.2012 20:42
quelle
1

So etwas sollte helfen:

%Vor%     
jabclab 12.01.2012 15:11
quelle
1

Eine Methode könnte sein, ein Array zu sortieren (na ja, ein jQuery-Objekt) der li -Elemente und ersetzen Sie den Inhalt (mit der html -Methode) von ul mit dem sortierten Array von Elementen:

%Vor%

Hier ist ein funktionierendes Beispiel .

    
James Allardice 12.01.2012 15:09
quelle
0

Sie können diese Methode verwenden:

%Vor%

Überprüfen Sie den Artikel hier: Ссылка

Bearbeiten: Es gibt ein sehr cooles jquery-Plugin, das Folgendes tut: Ссылка

    
T23 12.01.2012 15:10
quelle
0

Verwenden von jQuery für Hilfe:

%Vor%

Fiddle Link

    
Skyrim 12.01.2012 15:08
quelle
0

Sortiere die jQuery-Sammlung als normales Array und füge dann jedes Element in der richtigen Reihenfolge zurück.

%Vor%

Ссылка

    
dfsq 12.01.2012 15:27
quelle
0

Nicht-jQuery-Version (Vanille-JavaScript)

Vorteile: Die Liste wird an Ort und Stelle sortiert, wodurch weder die LIs zerstört noch irgendwelche damit verbundenen Ereignisse entfernt werden. Es schlurft einfach herum.

Eine ID zum UL hinzugefügt:

%Vor%

und das Vanille-Javascript (keine jquery)

%Vor%

Und der Geigenbeweis: Ссылка

    
bob 26.06.2015 15:14
quelle