Warum hat das Draggable-Objekt einen langsamen Platzhalter?

8

Ich habe wirklich kein Problem, aber ich habe bemerkt, dass das Objekt Draggable manchmal langsame Platzhalter hat.

Ich habe diesen Test gemacht: Ссылка

%Vor%

Das Objekt der Liste im ziehbaren Objekt hinzuzufügen ist einfach ohne Probleme, aber wenn ich versuche, ein Element im ziehbaren Objekt zu verschieben, sehe ich, dass sich der rote Platzhalter langsam bewegt.

Ich meine, dass der Platzhalter, wenn er sich horizontal bewegt, mehr Zeit zum Bewegen hat (um seine Position zu aktualisieren). Ich muss die Maus um die neue Position bewegen, um die Position des Platzhalters zu aktualisieren. Ich hätte es gerne reaktiver. Ist das möglich?

BEARBEITEN:

Sieh dir das Bild an. Wie Sie sehen können, bewegte ich ein Element (von der vierten Position) zwischen der ersten und der zweiten Position. Wie Sie sehen können, ist der Platzhalter weit entfernt.

EDIT 2:

Ich benutze * Chromium 30.0.1599.114 Ubuntu 13.10 (30.0.1599.114-0ubuntu0.13.10.2) *

    
Dail 24.11.2013, 22:49
quelle

3 Antworten

5

Sie haben das Recht, wenn Sie ein leeres <li></li> innerhalb des Sortable-Objekts hinzufügen, das das Problem behebt.

Ich denke, dass es eine praktikable Lösung ist, aus irgendeinem Grund benötigt das sortable-Objekt nur ein sort-fähiges Element, wenn das sort-fähige initialisiert wird. Ich glaube, das Herz der Antwort ist das: The sortable needs to know what kind of elements it is going to be sorting when initialized in order for the placeholder to work properly. Therefore if you are going to be sorting li elements, you should initialize the sorter with at least 1 li element in the Sortable object.

Ich glaube, dass dies der Fall ist, weil ich versucht habe, die leeren <li> durch zu ersetzen und <div> zu leeren, und das hat das Problem nicht behoben.

Ihre Lösung hat derzeit nur zwei kleinere Probleme. Das leere <li> wird beim Ziehen des ziehbaren Objekts weiterhin berücksichtigt. Sie können sehen, dass der Ziehbare nach links und rechts von empty li sortieren kann, was irgendwie komisch aussieht. Sie können auch empty li ziehen, was zu Verwirrung führen kann.

Aber zum Glück ist die Arbeit dafür sehr einfach. Das li muss nur im Sortierbar sein, wenn es initialisiert ist. Wir können es nachher entfernen und alles funktioniert super!

HTML - sortierbar mit li element.

%Vor%

jQuery

%Vor%

FIDDLE

    
Trevor 27.11.2013, 16:39
quelle
1

Ich nehme an, die Handler von "Draggable" sind noch angeschlossen und stimmen nicht mit dem "Sortierbar" -Handler überein, der klickt. Das verursacht den Mangel an Reaktionsfähigkeit.

Löschen Sie die Handler, nachdem sie in Sortable eingefügt wurden, oder klonen / erstellen Sie das DOM-Element ganz neu - vielleicht indem Sie die innerHtml in ein neues DOM-Element oder dergleichen kopieren.

    
Thomas W 25.11.2013 06:58
quelle
0

In meinem Fall kam das Problem auf, wenn das Sortierbar ein Flexbox Container war.

Es spielt keine Rolle, ob die Sortierung mit Elementen gefüllt ist oder nicht, unabhängig davon, ob es sich um <div> , <li> oder <something-else> handelt.

Beispiel: Ссылка

jQuery UI Problemverfolgung

Es stellt sich heraus, dass es im jQuery UI Forum bereits geöffnete Fehlerberichte gibt, die sich auf die Verwendung von flexbox in sortables beziehen: Ссылка

Leider konnte ich kein neues Ссылка erstellen: (

Hey, jeder von jQuery UI-Team, wenn Sie dies lesen, erklären Sie bitte, warum Sie immer noch dieses hässliche Forum aus den 90er Jahren anstelle von GitHub Issues verwenden?

Dieses Problem ist sehr ärgerlich, da wir überall Flexbox-Elemente haben

Problemumgehung

Ja, es gibt einen hässlichen, schmutzigen Workaround:

Ссылка

Verbinden Sie Zugobjekte nie mit Sortiern, es sei denn, das Problem wird vom jQuery-UI-Team gelöst, oder jemand leistet einen Beitrag und macht eine Pull-Anforderung.

Auch wenn Sie ein einzelnes ziehbares Objekt haben, wickeln Sie es mit div ein, initialisieren Sie es als sortierbar und verbinden Sie dieses div mit anderen Sortiern. Es verhält sich wie ziehbar und funktioniert ohne Probleme.

Buggy jQuery UI Sortierbar

Leider ist nach ein paar Umherziehern zwischen den Sorables ein neues Problem entstanden, siehe das Bild.

Also muss ich meine Problemumgehung neu formulieren: Verwenden Sie nicht jQuery UI Sortable mit Flexbox Containern. Nun, es gibt einen Klud, fügen Sie einfach dieses schreckliche Stück sh * t den Optionen des sortierbaren hinzu:

%Vor%

Mit anderen Worten, bereinigen Sie das sh * t nach dem

Beispiel: Ссылка

Im Ernst, Zeit, um alternative Bibliothek zu suchen, anstatt diesen veralteten Mist zu benutzen.

    
Steven Pribilinskiy 03.05.2017 10:07
quelle