Ich habe einen unerwünschten Effekt, wenn ich ein Div aus einem Container-Div ziehe, das als Überlauf festgelegt ist: scroll.
Ich habe ein Beispiel für eine andere Person gefunden, bei der das Problem aufgetreten ist, aber ich konnte keine Lösung finden
Beispiel zum Einfügen eines Fachs
Was passiert ist, dass der Bildlauf nur vergrößert wird. Ich kann sehen, warum dies das gewünschte Verhalten ist, wenn Sie zu einem Ziel innerhalb des scrollbaren Div ziehen möchten, aber ich möchte es außerhalb seines Bildlaufbereichs nehmen können.
jquery-ui
drag-and-drop
Phill Duffy
quelle
quelle
Antworten:
Ich hatte ein ähnliches Problem beim Aktivieren eines Drag zwischen zwei Überlauf-Auto-Divs. Mit Hilfe der vorherigen Antworten stellte ich fest, dass diese Kombination für mich funktioniert (Safari 5.0.3, jquery-1.4.4, jquery-ui-1.8.7):
appendTo: 'body', containment: 'window', scroll: false, helper: 'clone'
quelle
Anhängen
Element, SelectorDefault: 'Eltern'
Das Element, das an die Option appendTo übergeben oder von dieser ausgewählt wird, wird beim Ziehen als Container des ziehbaren Hilfsprogramms verwendet. Standardmäßig wird der Helfer an denselben Container wie das Draggable angehängt.
Codebeispiele Initialisieren Sie ein Draggable mit der angegebenen Option appendTo.
$('.selector').draggable({ appendTo: 'body' });
quelle
Es lohnt sich auf jeden Fall, auf die Dokumentation zu achten
http://docs.jquery.com/UI/Draggable#option-scroll
Alle, die hier eintreten, lernen aus meinem Fehler, RT (F) M !!!
quelle
Die Klonlösung funktioniert, hat aber zwei Probleme.
Erstens: Die Klone werden an den Körper angehängt. Abhängig von Ihrem CSS kann Ihr Element die Stile ändern, da es sich vor dem Start in einem anderen Element befindet und sich beim Ziehen direkt auf dem Body-Element befindet.
Zweitens: Manchmal MUSS sich das Element bewegen, und der Klon lässt das Objekt dort.
Die Lösung für diese Probleme lautet also:
$('.selector').draggable({ helper: 'clone', start: function(){ $(this).hide(); }, stop: function(){ $(this).show() } });
quelle
Das Festlegen der Bildlaufoption verhindert nicht, dass untergeordnete Elemente im Überlaufbereich ausgeblendet werden. Ich habe mir eine Work-a-Round ausgedacht, die die Helfer-Option verwendet. Hör zu:
http://pastebin.me/164f0a4073496563fe3179ddcec5fd6d
Auch hier ist ein Verweis auf einen anderen Beitrag, den ich gemacht habe:
jquery ui ziehbare Elemente, die außerhalb von scrollenden Div nicht 'ziehbar' sind
quelle
Sie können auch angeben, welche Arten von Elementen Sie nicht einschließen möchten.
<div class="draggable"> <h2>This will drag the div</h2> <ul> <li>This won't drag the div</li> </ul> </div>
Wenden Sie diese Eigenschaft cancel an, um das Ereignis in angegebenen untergeordneten Elementen zu ignorieren
$('.draggable').draggable({cancel : 'ul'});
quelle