我有一个jQuery UI draggable和几个单独定义的droppables。由于其中一个droppable配置为tolerance: 'intersect'
,因此可以同时将多个droppable拖放到drappable上。
阻止意外摔倒的最佳方法是什么?基本上,我想优先考虑droppables,以便在触发另一个droppable时不会触发tolerance: 'intersect'
的droppables。
更新 - 有关澄清事项的更多信息:
除tolerance: 'pointer'
的一类droppable外,所有droppable都配置为tolerance: 'intersect'
。
一类droppable有tolerance: 'intersect'
的原因是droppables非常狭窄,用户在使用tolerance: 'pointer'
找到它们时遇到问题。
将droppables进一步拆开不是一种选择。
没有任何droppable重叠,但是draggable足够大,可以与tolerance: 'intersect'
的droppable重叠,而鼠标指针在tolerance: 'pointer'
的另一个droppable上。通过这种方式,最多可以同时触发两个droppable。
如果已经触发了另一个可放置的内容,则可以通过忽略tolerance: 'intersect'
可放置的内容来确定用户的意图;即,如果用户将鼠标指针移动到具有tolerance: 'pointer'
的可放置对象上,则可以安全地假设他/她打算将其放在那里。问题是,我无法弄清楚如何忽略不需要的droppable。
答案 0 :(得分:7)
在over:
中,为预期的droppable分配一个类,并从所有其他droppable中删除该类:
$(".dragArea").not($(this)).removeClass("dragHover");
$(this).addClass("dragHover");
然后在drop:
中,检查是否设置了类:
if(!$(this).is('.dragHover')){
return false;
}
这样,只会触发一个dropable。
答案 1 :(得分:1)
也许在“不太喜欢的”可投放的过度事件中,您可以检查可拖动是否也超过“首选”可投放,如果禁用“不太优选”可投放。
对于这个术语感到抱歉,只是想集体讨论。
答案 2 :(得分:0)
将它们彼此远离地移动,以便它们不会同时掉落。否则,你应该如何确定用户的意图?你打算计算每个相交的可放置的可拖动百分比吗?