如何防止触发多个jQuery UI droppable?

bry*_*yan 5 jquery jquery-ui droppable draggable

我有一个jQuery UI可拖动和几个单独定义的droppables.由于配置了其中一个droppable tolerance: 'intersect',因此可以同时将多个dropppable拖放到drappable上.

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

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

  • tolerance: 'pointer'除了一类droppable之外,所有的droppable都被配置tolerance: 'intersect'.

  • 一类droppable的原因tolerance: 'intersect'是droppables真的很窄,用户在找到它们时遇到了问题tolerance: 'pointer'.

  • 将落差器进一步拆开不是一种选择.

  • 没有任何droppable重叠,但draggable足够大,可以与droppable重叠,tolerance: 'intersect'而鼠标指针在另一个droppable上tolerance: 'pointer'.通过这种方式,最多可以同时触发两个可放置的放置点.

  • UI被布局,因此tolerance: 'intersect'如果已经触发了另一个可放置,则可以通过忽略可放置来确定用户的意图; 即,如果用户将鼠标指针移到了一个可放置的上面,可以tolerance: 'pointer'安全地假设他/她打算将它放在那里.问题是,我无法弄清楚如何忽略不需要的droppable.

ali*_*gex 7

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

$(".dragArea").not($(this)).removeClass("dragHover");
$(this).addClass("dragHover");
Run Code Online (Sandbox Code Playgroud)

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

if(!$(this).is('.dragHover')){
    return false;
}
Run Code Online (Sandbox Code Playgroud)

这样,只触发一个droppable.


Jas*_*son 0

将它们彼此保持一定的物理距离,这样它们就不会同时掉落。否则,你应该如何确定用户的意图?您要计算每个相交可放置对象上可拖动对象的百分比吗?