[编辑]:解决方案在TCHdvlp的评论中给出了他的回复。非常感谢!
我需要将元素从一个容器(container1)拖到另一个容器(container2)并返回,就像在这个小提琴中一样:
(这不是我创造的:see original question)
正如您在上面的示例中所看到的,当元素附加到其新容器时,其“样式”属性将被删除,并且它会捕捉到新容器的左上角。
$(ui.draggable).appendTo($(this)).removeAttr('style');
我希望拖车能够留在新容器中,然后放下它。
但如果我删除.removeAttr('style'),
$(ui.draggable).appendTo($(this));
保留位置信息,但由于可拖动的父级已更改,因此不准确。因此,当从container1放入container2时,我的draggable位置要低得多,而在另一种情况下则高得多。
我能够根据容器的相对位置计算我的元素应该“着陆”的新位置。但我不知道如何定义这个位置。
我跳得很清楚,你可以给我一些建议。
谢谢!
答案 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
功能
append
和dropped
因为我们不希望元素附加到该区域,所以我们不使用append
。
我们将使用2个变量来比较最后和当前的可投放区域