2016-05-17 28 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

相關問題