克隆的jQuery draggable不能自行删除

时间:2011-01-27 20:38:40

标签: jquery jquery-ui draggable droppable

使用jQuery UI,我有一个div foo,它既可拖动又可放置,而div bar只能放置。拖动会在helper: 'clone'选项打开时发生,因此原始foo实际上并未移动。当我将克隆的foo放在原始foo之上时,drop: function不会被调用。

这看起来很奇怪,因为当我将克隆的foo放到bar上时它会起作用。它还可以将其他可拖动的内容放到foo上。唯一的问题是我不能将foo放到自己身上。

我只是说foo和bar,可拖动和可拖放这么多次,即使我很困惑,但这个例子应该清除:

http://jsfiddle.net/5KATZ/

如果您尝试将第一个框拖到第二个或第三个框上,则可以正常工作。但是如果不是将它放到第二个盒子上,而是开始拖动它,然后尝试将它放到自身上,没有任何反应。如果这是事情应该如何运作,那么我做错了什么?如果这是jQuery UI中的错误,那么你能想到任何好的解决方法吗?

1 个答案:

答案 0 :(得分:1)

修改

这个效果更好:http://jsfiddle.net/kW369/,我也离开了原来的那个。

好问题!这是jQuery中的默认行为,我认为它以这种方式工作是正确的......需要将项目放到自身上是一件奇怪的事情。无论如何,请尝试this jsFiddle,这是您问题的部分解决方案。

它的工作原理是检测拖动的div的位置,如果与第一个div位置折叠则看到它。我知道这不是最明确的解决方案,但它是我唯一能够提出的解决方案。此外,这有一个错误,因为位置是使用div的左上角计算的,所以如果你通过将鼠标放在第二个div内而将第一个div放到第二个div上但是你要拖动div的左上角它位于第一个上面,就像你把它放到两个div上一样。您应该使用鼠标位置而不是ui.position ['top']和ui.position ['top']并使用左侧来更精确地检测位置。