拖放到单独的容器中,并调整掉落元素的位置

时间:2013-12-12 15:55:41

标签: javascript jquery jquery-ui

[编辑]:解决方案在TCHdvlp的评论中给出了他的回复。非常感谢!

我需要将元素从一个容器(container1)拖到另一个容器(container2)并返回,就像在这个小提琴中一样:

http://jsfiddle.net/U2nKh/20/

(这不是我创造的:see original question

正如您在上面的示例中所看到的,当元素附加到其新容器时,其“样式”属性将被删除,并且它会捕捉到新容器的左上角。

$(ui.draggable).appendTo($(this)).removeAttr('style');

我希望拖车能够留在新容器中,然后放下它。

但如果我删除.removeAttr('style'),

$(ui.draggable).appendTo($(this));

保留位置信息,但由于可拖动的父级已更改,因此不准确。因此,当从container1放入container2时,我的draggable位置要低得多,而在另一种情况下则高得多。

我能够根据容器的相对位置计算我的元素应该“着陆”的新位置。但我不知道如何定义这个位置。

  • 我应该让.removeAttr('style')并使用新值重新创建它吗?但是怎么样?
  • 我应该删除该部分,还要修改位置值?但是怎么样?

我跳得很清楚,你可以给我一些建议。

谢谢!

1 个答案:

答案 0 :(得分:2)

仔细阅读所有小提琴!可拖动的div有一个top:10px;left:10px; property。当它被拖动时,那些属性会发生变化。当它掉落在另一个可放置的区域时,removeAttr('style');将删除内联样式并设置10 * 10px偏移量。但是,它并没有被抢购一空。此外,可拖动元素为position:absolute,但可放置区域为position:relative这意味着子元素与其父元素相对定位。

这就是为什么,原来的小提琴,10 * 10px的位置看起来总是一样的,只有可放置的区域。

删除css position:relative中的容器和position:absolute的div。 删除removeAttr功能

中的appenddropped

因为我们不希望元素附加到该区域,所以我们不使用append。 我们将使用2个变量来比较最后和当前的可投放区域

http://jsfiddle.net/TCHdevlp/U2nKh/576/