背景: 我有一个可拖动的,我放入一个可放置的可拖动。在'Drop'上,draggable变为嵌套在droppable中。在'out'(即拖拽可拖动外部的拖拽)时,拖拽变得不嵌套 - 即嵌套到身体上。
ISSUE: 可拖动的嵌套和取消嵌套导致可拖动的对齐位置到新位置。这是因为draggable的css包含与previsous parent的相对位置,并且在嵌套到新父级的过程中,假定该相对css是相对于新父级的。
示例和问题: http://jsfiddle.net/sandeepy02/CNtRX/2/的示例 您可以通过
复制问题创建对象'Room'和'Table'。
移动'房间'。
将'Table'放入'Room'。
该表重新定位,远离鼠标光标。发生这种情况的原因是因为'table'的css包含了相对于main boundaryContainer的表的位置。当我将'table'嵌入'room'时,相对于'room'应用相同的相对位置,从而导致'table'位置的突然变化。
实际上,当我拖出'table'时,位置再次捕捉到不同的psoition,因为'table'css现在包含'room'的相对位置,并且'table'追回'boundaryContainer'会导致相对位置'room'被假定为'boundaryContainer'的相对位置。
任何帮助将不胜感激。
答案 0 :(得分:1)
你的问题在于附加在表格Div上的两个额外参数 - > left
& top
。我建议的解决方法是,有一个选项可以在每个draggable或droppable事件之后调用一个函数。在该函数中,您可以将这两个属性的值设置为0;
当我使用Firebug删除它们时,位置完全对齐。你可以尝试一下并在这里公布结果吗?
答案 1 :(得分:0)
Afrin,谢谢你的回复。我放弃了相同的解决方案,并停止检查上周的响应。但你的反应似乎就像隧道尽头的光。
我从你建议的内容中修改并修改了我的代码,使得左边和右边不是零,而是可拖动左边和droppable左边的总和。
当我将dropggable放入droppable中时似乎有效。但是当我将可拖动拖动到droppable外时,同样不起作用。可拖动的位置仍在跳跃。
相同的代码位于http://jsfiddle.net/sandeepy02/CNtRX/3/
我做了一些修改,以便我们也可以看到div的位置。
更改位置的代码是:
ui.draggable.css({
"left": positionDrag.left - $(this).offset().left,
"top": positionDrag.top - $(this).offset().top
});