1

背景:我有一个可拖动的对象,我将其放入可拖放的可拖动对象中。在“放置”时,可拖动对象嵌套在可放置对象中。在“出”时(即将可拖动对象拖到可放置对象之外),可拖动对象变为非嵌套 - 即嵌套到主体。

ISSUE: 可拖动对象的嵌套和取消嵌套导致可拖动对象的位置捕捉​​到新位置。这是因为可拖动的 css 包含了与前一个父级的相对位置,并且在嵌套到新父级的过程中,这个相对 css 被假定为相对于新父级。

示例和问题: http: //jsfiddle.net/sandeepy02/CNtRX/2/上的示例 您可以通过以下方式复制问题

  1. 创建对象“房间”和“桌子”。

  2. 移动“房间”。

  3. 将“表”放入“房间”。

表格被重新定位到远离鼠标光标的位置。发生这种情况的原因是因为“表”的 css 包含表相对于主边界容器的位置。当我将“桌子”放入“房间”并将其嵌套时,然后相对于“房间”应用相同的相对位置,从而导致“桌子”位置的突然变化。

事实上,当我拖出“table”时,该位置再次捕捉到不同的位置,因为“table”css 现在包含与“room”的相对位置,并且将“table”附加到“boundaryContainer”会导致“room”的相对位置被假定为“boundaryContainer”的相对位置。

任何帮助将不胜感激。

4

3 回答 3

1

您的问题在于附加到 Table Div -> left&的两个额外参数top。我建议的一种解决方法是,可以选择在每个可拖动或可放置事件之后调用函数。在该函数中,您可以将这两个属性的值设置为 0;

当我使用 Firebug 删除那些时,位置完全对齐。您可以尝试一下并在此处发布结果吗?

于 2012-07-30T06:07:49.817 回答
0

阿夫林,谢谢你的回复。我已经放弃了相同的解决方案,并停止检查上周的响应。但你的反应似乎是隧道尽头的曙光。

我从你的建议中获取并修改了我的代码,使得左右不为零,而是可拖动的左侧和可放置的左侧的总和。

当我将可拖动对象放入可放置对象时,它似乎起作用了。但是,当我将可拖动对象拖到可放置对象之外时,同样的方法不起作用。可拖动的位置仍然跳跃。

相同的代码位于http://jsfiddle.net/sandeepy02/CNtRX/3/

我做了一点修改,以便我们也可以看到 div 的位置。

更改位置的代码是:

        ui.draggable.css({
            "left": positionDrag.left - $(this).offset().left,
            "top": positionDrag.top - $(this).offset().top
        });
于 2012-08-10T08:14:27.737 回答
0

我是这样解决的

jquery_ui.js我发现_mouseDrag: part

this.helper[ 0 ].style.left = this.position.left - new_el_pos + "px";
this.helper[ 0 ].style.top = this.position.top - new_el_pos + "px";

在创建 elemen 时,我添加了new_el_pos变量,它等于元素的第一个位置。所以每次我拖动 - 它都会纠正对象的 css。

我在互联网上没有找到其他解决方案..

于 2022-02-10T07:07:49.707 回答