Ich habe eine Reihe von ziehbaren Elementen implementiert, die in einige Container mit jQuery abgelegt werden können. Was ich brauche, ist eine Animation, die ein Element ohne Benutzerinteraktion in einen bestimmten Container verschiebt. Das Problem ist, dass die Elemente und die Drop-Container vollständig in verschiedenen Teilen des DOM und meist mit Float positioniert sind.Erhalten relative Position zwischen 2 DOM-Elementen mit JavaScript
Alles, was ich brauche, ist ein Code, um den absoluten Positionsunterschied zwischen 2 Floating-DOM-Elementen zu erhalten, vorzugsweise mit jQuery. Das einzige, was ich fand, waren einige Hacks, die das DOM nach oben analysierten, aber immer sehr Browser-spezifisch (z. B. "das funktioniert nicht gut mit Firefox oder IE oder was auch immer").
Am besten wäre so etwas wie dieses:
var distance = getDistance(element1, element2);
oder in jQuery Notation:
var distance = $(element1).distanceTo($(element2));
Dies funktioniert nicht, da .offset() nur die relative Position zum übergeordneten Element zurückgibt. Da die übergeordneten Elemente nicht identisch sind, können die Werte nicht verwendet werden. Der Diagonalabstand ist nicht wichtig, da ich linke und obere Werte erwartet habe ;-) – davil
Nun, ich stimme dir nicht zu. Laut der jQuery-Referenz (http://docs.jquery.com/CSS) erhält der Offset "den aktuellen Offset des ersten übereinstimmenden Elements relativ zum Viewport". Ansichtsfenster ist das Schlüsselwort, es ist nicht das offsetParent –
Das Beispiel auf der Offset-Seite ist ziemlich irreführend. Die Beispiele werden in iframes geladen, was es so aussehen lässt, als ob die Position nur relativ zum Eltern ist, während sie tatsächlich relativ zum Dokument ist (in diesem Fall der Iframe) – nickf