5

我有一个jQuery UI draggable和几个单独定义的droppables。因为其中一个 droppable 被配置tolerance: 'intersect',所以一个可拖动对象可能同时被拖放到多个 droppable 上。

防止意外 droppables 发射的最佳方法是什么?基本上,我想优先考虑droppables,以便在tolerance: 'intersect'触发另一个droppable 时不会触发droppables。

更新- 更多信息以澄清事情:

  • tolerance: 'pointer'除了一类 droppable和tolerance: 'intersect'.

  • 一类 droppable 具有的原因tolerance: 'intersect'是 droppable 非常狭窄,用户在使用tolerance: 'pointer'.

  • 将 droppables 移得更远不是一种选择。

  • 没有任何可放置对象重叠,但可拖动对象足够大,可以tolerance: 'intersect'在鼠标指针悬停在另一个可放置对象上时与 重叠tolerance: 'pointer'。以这种方式一次最多可以触发两个 droppable。

  • UI 的布局是这样的,tolerance: 'intersect'如果触发了另一个 droppable,则可以通过忽略 droppable 来确定用户的意图;即,如果用户将鼠标指针移到一个带有 的droppable 上tolerance: 'pointer',则可以安全地假设他/她打算将它放在那里。问题是,我不知道如何忽略不需要的 droppable。

4

3 回答 3

7

over:中,将一个类分配给预期的 droppable,并从所有其他 droppable 中删除该类:

$(".dragArea").not($(this)).removeClass("dragHover");
$(this).addClass("dragHover");

然后在 中drop:,检查是否设置了类:

if(!$(this).is('.dragHover')){
    return false;
}

这样,只会触发一个 droppable。

于 2012-08-09T10:44:22.230 回答
1

也许在“不太喜欢”的droppable的过度事件中,您可以检查draggable是否也超过了“preferred”的droppable,以及它是否禁用了“不太喜欢的”droppable。

对不起术语,只是想集思广益。

于 2009-08-18T07:57:12.387 回答
0

将它们彼此远离物理距离,以免它们同时掉落。否则,您应该如何确定用户的意图?您是否要计算每个相交的 droppable 上可拖动的百分比?

于 2009-08-18T06:52:58.117 回答