jQueryUI ziehbar sets "position: relative" auf meinem draggable divs
Ich bin mit einer ungeraden problem mit jQuery draggable an diesem morgen, ich Frage mich, ob jemand über diesen.
Habe ich viele kleine divs in einem großen div. Sie werden absolut positioniert: "position:absolute" in der CSS für Ihre Klasse, mit der tatsächlichen position selbst berechnet und gesetzt in JS-on-demand.
Nun bin ich das hinzufügen von Funktionalität zu ermöglichen, diese divs werden ziehbar.
Aber, sobald ich eines gezogen werden kann, ist es gegeben "position:relative" direkt auf das element, die, wie Sie sich vorstellen können, ernsthaft vermasselt die auf dem Bildschirm positionieren.
Weiß jemand, warum es ändert sich die "position" oder wie man es sagen, nicht?
EDIT:
Nur klar, dass es ist eine offensichtliche Antwort, starrte mir ins Gesicht !wichtig auf meiner position:absolute! Dies scheint, um es zu beheben. ABER ich bin immer noch interessieren, ob jemand weiß, warum es die sets "position: relative" wie diese (und auch nicht machen es konfigurierbar oder erst prüfen, ob es benötigt position)...ich Frage mich, was für Probleme ich habe gerade gespeichert für mich selbst 😉
- Welche version verwenden Sie? Und wie sind Sie initialisieren? Ziehbar unterstützt sowohl die absolute und die relative Positionierung. Doppel überprüfen Sie den code, standardmäßig ist das der einzige Grund, es sollte festgelegt werden, zu relativen, wenn keine position festgelegt ist, die auf das element.
- Cheers Nal. Ich bin mit der 1.7.2. Die position festgelegt ist, in der Klasse, nicht auf das element, und ohne die draggable auf das element, kann ich sehen, in der Chrome-debugger ist es "position: absolute" berechnet. Und es funktioniert. Wenn ich die gezogen werden kann, um es "position: relative" auf das element angewendet wird, direkt. Dies kann ein jquery bug dann, wo es sein sollte, mit getComputedStyle, die position zu finden.
- Das ist eine wirklich alte version. Sie sollte wohl ein upgrade auf 1.8 und sehen, ob das einen Unterschied macht. Sind Sie mit der
helper
ziehbar option oder andere Optionen? Aber trotzdem, die einzige Linie, wo position:relative gesetzt ist, wird hier - Ich stieß auf das gleiche problem heute. Der Grund war, dass ich die Anwendung
draggable()
auf einem dynamisch erzeugten element. Ich wurde 'später' anfügen andom
. Das element sollte indom
wenn Siedraggable()
(wenn die Formatvorlage wird angewendet durch eine Klasse). Kurz gesagt, wenn es findet keine position befestigt, die mit derelement
fügt esrelative
. - Dieses Problem ist vorhanden, genau so, wie oben beschrieben, 1.10.2 und manifestiert sich in ie10 auf Win7 und das element wurde bereits Hinzugefügt, um den DOM mit einer Klasse die Angabe von position:absolute und Werte für top und left, wenn draggable angewendet wird. Einstellung $("#foo")[0].Stil.Position=""; unmittelbar nach dem Aufruf ziehbar verrechnet wird das effektive problem, auch wenn ich weiß wirklich nicht, warum dies geschieht.
- Nein, ich sagen, eine Lüge, die Klassen angewendet wurden unmittelbar nach dem Aufruf ziehbar und Sie sind 100% richtig, das hält es aus Einstellung der position.
- Ich sah dieses Verhalten auf Chrome und Safari, aber nicht in Firefox. Jashwant s Vorschlag oben behoben das problem sofort bei mir in allen 3 Browsern.
Du musst angemeldet sein, um einen Kommentar abzugeben.
"Ich stieß auf das gleiche problem heute. Der Grund war, dass ich die Anwendung
draggable()
auf einem dynamisch erzeugten element. Ich wurde 'später' anfügen andom
. Das element sollte indom
wenn Siedraggable()
(wenn die Formatvorlage wird angewendet durch eine Klasse). Kurz gesagt, wenn es findet keine position befestigt, die mit derelement
fügt esrelative
." - JashwantTannen tun:
.append(jElement)
Dann:jElement.draggable()
Aus irgendeinem Grund Jashwant legte ihm die Antwort in den Kommentar zu der Frage. Also dachte ich, es wird bequem sein, zum anderen umbuchen es hier.
Es auch mir passiert, aber nur in Chrome. Grund?
War es so:
Dann entfernte ich die containment parameter, wie folgt:
So ist es über den Browser (Chrome in diesem Fall), legt fest, welche position Relative, wenn Sie angeben, welche containment wird das element gezogen werden.
in meinem Fall scheint es eine race-condition zwischen der stylesheets und javascript geladen...
ich erkannte, ich habe den Fehler gemacht, einschließlich der stylesheets NACH den javascript-Code in das Dokument-Kopf. Sie sollten aufgenommen werden, BEVOR das javascript, weil
$(document).ready()
berücksichtigt nicht die CSS geladen wird vom browser: https://stackoverflow.com/a/1324720/3633109