JQuery sortierbar verschachtelte sortierbare divs

8

Diese Frage hat etwas damit zu tun Nest jQuery UI Sortierbar , aber ich konnte nicht Löse mein Problem damit nicht.

Hier ist das Problem: Ich habe einen Hauptcontainer, der Elemente enthält, diese Elemente sind Divs, die nicht gruppierte Elemente oder Gruppen sein können, die andere Elemente enthalten. Ich kann neue Gruppen definieren, indem ich das .multiply-group div ziehe und dann kann ich die ganze Gruppe auf einmal ziehen. Hier ist der Code:

%Vor%

Und hier ist eine Geige: Ссылка

Das Problem ist, dass ich bekomme, wenn ich den letzten Gruppencontainer aus dem unteren Bereich des Hauptcontainers heraus ziehe, statt unten auf dem Hauptcontainer zu bleiben und den folgenden Fehler zu erhalten:

  

Uncaught HierarchyRequestError: Fehler beim Ausführen von 'insertBefore' on   'Knoten': Das neue Kindelement enthält das Elternelement.

Kann mir bitte jemand helfen, zu verstehen, was vor sich geht und wie man es löst?

    
António Quadrado 05.02.2016, 19:08
quelle

1 Antwort

3

Vielleicht hast du es übertrieben, als du das codiert hast: zwei Sortierungsdateien, unnötiges Löschen von Ereignissen, Verbindungslisten, die bereits verbunden waren, usw.

Das Problem mit der letzten Gruppe, die am Ende stecken blieb oder verschwand, schien ein Problem zu sein, .sortable() bei jeder Listenaktualisierung erneut anzuhängen, eine Wiederholung, die zu unerwartetem Verhalten führte. Aber das Entfernen dieser Wiederholung hat dazu geführt, dass sich Ihre Liste nicht so verhielt, wie Sie es sich vorstellten, also war ein zusätzliches Refactoring notwendig:

1) Verwenden Sie nur einen .sortable() -Aufruf, und definieren Sie dann, welche Artikel sortierbar sein sollen (nämlich .row und .locked für die individuelle bzw. gruppierte Sortierung). Das ist schon genug für das, was Sie vorhaben. Das einzige Problem hierbei ist, dass das Ziehen einer Gruppe in die Mitte einer anderen Gruppe eine weitere Verschachtelungsebene hinzugefügt hat:

2) Um zusätzliche Verschachtelungsebenen zu vermeiden, entfernen Sie die Gruppen .locked vor dem erneuten Einschließen.

%Vor% %Vor% %Vor%
    
Tomas Buteler 06.02.2016, 00:13
quelle