4

使用 jQuery UI,我有一个foo既可拖动又可放置的 div,以及一个bar只能放置的 div。拖动发生在helper: 'clone'选项打开的情况下,因此原件foo实际上并没有移动。当我将克隆foo放在原始foo的顶部时,drop: function不会调用。

这看起来很奇怪,因为当我将克隆的内容foo放到bar. 它还可以将其他可拖动对象拖放到foo. 唯一的问题是我不能自己倒下foo

我刚刚说了很多次 foo 和 bar 以及 draggable 和 droppable ,以至于我都感到困惑,但是这个例子应该可以解决问题:

http://jsfiddle.net/5KATZ/

如果您尝试将第一个框拖到第二个或第三个框上,它会起作用。但是,如果不是将其拖放到第二个盒子上,而是开始拖动它,然后尝试将其拖放到自身上,则什么也不会发生。如果这就是事情应该如何运作,那么我做错了什么?如果这是 jQuery UI 中的一个错误,那么您能想到任何好的解决方法吗?

4

1 回答 1

1

编辑

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

好问题!这是 jQuery 中的默认行为,我认为它以这种方式工作是正确的……需要将一个项目放到自身上是一件奇怪的事情。不管怎样,试试这个 jsFiddle,它是你问题的部分解决方案。

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

于 2011-01-27T21:53:06.467 回答