如果droppable事件无法正常工作,则可拖动掉落在贪婪的droppable上并再次拖动

时间:2015-03-19 12:04:38

标签: javascript jquery jquery-ui

以下jsbin最能解释过度事件未被触发的情况。

执行以下操作:

  1. 将可拖动(黄色)拖放到droppables(红色和蓝色)上,对于over事件,droppables将其背景颜色更改为绿色,而out事件则将其背景颜色更改回来。

    < / LI>
  2. 将可拖动内容放在内部可放置(蓝色)上。

  3. 将拖动拖动到外部的droppable(红色)上,它应该将其背景颜色更改为绿色,但它不会!过度事件没有被解雇但是当你再次离开外部的droppable时,它的out事件会触发。从那里开始按预期再次运作。

  4. 我认为这种行为是一个错误。我应该创建一个错误票吗?

    编辑:

    如果我只为droppable选项设置hoverClass,也会实现相同的行为。请参阅以下jsbin。这必须是一个错误,因为行为是不一致的。在内部droppable中删除draggable之后,行为是不同的。

1 个答案:

答案 0 :(得分:1)

我想出了一个解决方法:

通过调查行为,out事件中必须有一些逻辑,这在drop事件中没有发生。每次draggable进入贪婪的droppable时,都会应用一些逻辑来阻止祖先droppables触发drop事件。在每个out事件中,此逻辑被重置,并且drop事件中缺少此重置。所以我从out事件中获取了所需的部分并将它们实现到drop事件中。

请参阅以下jsbin

我已经因为没有打开错误票而道歉。如果有人想这样做,请继续。

编辑:

Ankit Saroch指出,此问题已存在错误提示,并且还存在更简单的解决方法。查看问题文本下方的评论。