2016-05-17 27 views
0

我使用jquery“draggable”&“droppable”将元素从一个div移动到另一个div。
更改元素的“offsetParent”以获取相对于它最接近的父元素的位置?

当我把元素放入“droppable”时,我想存储新的位置。
我可以这样做:$('draggedElement').position()
唯一的问题是,我会得到的位置相对于“offsetparent”这是“身体”。
我希望它是相对于dropzone。

是否可以更改“offsetparent”,还是我需要以某种方式计算位置?

jquery offsetparent();不接受任何参数。

FIDDLE
https://jsfiddle.net/0apuqnxd/4/

+0

后你有什么请.. –

+0

@GuruprasadRao这是很多的代码,但是我可以告诉一个例子... –

+0

当然请....... –

回答

0

为offsetParent的文档(https://api.jquery.com/offsetParent/)表示如下:

说明:获取被定位最接近的祖先元素。

您需要将位置定义应用于您尝试抵消的父级。

<div id="parent" style="position: relative;"> 
    <div id="draggedElement"></div> 
</div> 

更新:

现在您提供一个小提琴我们可以看到,您可拖动的元素不是你拖放到该元素的孩子。所以你必须做一些数学来计算位置。在伪代码:

droppedPosition - (elementDroppedInto - draggableParent) 
+0

我不明白。看看我更新的小提琴。我将class“flakUp”设置为“相对”。但控制台日志不显示任何其他相对于身体的位置?! –

+0

好吧,您的可拖动元素不是您想要抵消offsetPosition的子元素。 https://jsfiddle.net/0apuqnxd/4/ 如果你看看这个更新的小提琴,我已经将它们移到第二个可投放区域,现在你的位置正在返回到该div内的位置。 – nineteeneightyeight

+0

如果必须这样工作,你将不得不做一些数学。计算您将元素放入的div的偏移位置与其父元素的偏移位置之间的差异,并将其从您放置的元素的位置移开。 [droppedElementPosition - (droppedElementParentPosition - parentPosition)] – nineteeneightyeight

相关问题