Wie kann ich mit jQueryUI Sortable von einer verbundenen vertikalen Liste zum ersten Element einer anderen Liste ziehen?

8

Ich habe mehrere ULs vertikal auf einer Seite. Sie werden mit der Sortierung () von jQueryUI eingerichtet. Mein Live-Beispiel ist:

Ссылка

Ich kann aus Antworten ziehen, um es zum letzten Element in Fragen zu machen. Aber wenn ich von Fragen zu Antworten ziehe, springt der Platzhalter zum zweiten Punkt in der Fragenliste. An diesem Punkt kann ich es dann nach oben ziehen. Aber ich kann nicht direkt auf die erste Position in der Liste Antworten ziehen.

Hier ist ein Video , das das Problem veranschaulicht.

Irgendwelche Ideen, warum ich dieses Problem von einer Liste oben auf das erste Element einer Liste ziehe?

Ich habe versucht, das Padding und den Rand auf den Listen und den sortierbaren Elementen zu bearbeiten.

Danke, Denis

    
Denis Hoctor 07.01.2011, 21:52
quelle

2 Antworten

2

Dies ist meine Beobachtung und plausible Erklärung für dieses seltsame Verhalten.

Wenn Sie ein Element vom Fragencontainer in den Antwortcontainer verschieben, fügt sich der Platzhalter zunächst zum Ende des Antwortcontainers hinzu, bevor die weitere Cursorbewegung zwischen answer1 und answer2 gelangt. Das sollte eigentlich nicht passieren Der Platzhalter sollte vor answer1 und dann zwischen answer1 und answer2 springen.
* PS: * Dieser Effekt ist im jsfiddle-Fenster möglicherweise nicht sichtbar, aber wenn Sie eine neue HTML-Seite mit dem angegebenen Code erstellen Du wirst sehen, was ich sage.

Weitere Untersuchungen zeigen, dass ein Fehler im sortierbaren jquery UI-Plugin vorliegt. Nimm die Entwicklerversion von jquery.ui.sortable.js und finde diesen Ausdruck "var dist = 10000; var itemWithLeastDistance = null". Das Ziel dieses Codeabschnitts ist es, das nächste Element herauszufinden, wenn der Cursor von einem Container zu einem anderen übergeht.

Beobachte die Variable " cur " (Ich habe console.log () Befehle für firebug hinzugefügt). Der Wert dieser Variablen ist immer 0 . Da der Wert von cur immer "0" ist, denkt der Code falsch, dass der letzte & lt; li & gt; Element als ' itemWithLeastDistance ' und springt fälschlicherweise dorthin.

%Vor%

Lass mich wissen, was die Gemeinde denkt. Wir können dies dem Team von jquery ui melden.

    
Antony Thomas 19.10.2011 14:59
quelle
0

Wenn Sie eine LI von einer Liste in eine verbundene Liste ziehen, verschwindet der "leere Platz" in der alten Liste. Dies bewirkt, dass die darunter liegenden Listen auf der Seite "nach oben" verschoben werden, genau so wie der Cursor die nächste Liste erreicht. Dies führt dazu, dass der gezogene Gegenstand über dem 2. Raum statt dem 1. Platz schwebt, was dazu führt, dass du deinen Cursor wieder nach oben schubst, um den 1. Platz zu bekommen.

Wenn Ihre Listen horizontal nebeneinander stehen, sehen Sie dieses Problem nicht (aber das hilft Ihnen natürlich nicht).

Ich habe noch keine wirkliche Lösung gefunden, aber hoffentlich wird dies das Problem eingrenzen.

    
Elliot Nelson 02.04.2011 23:32
quelle