2015-03-19 114 views
1

未触发over事件的情况最好由以下jsbin来解释。可拖放的事件在可拖动的可丢弃对象上被拖放并再次拖动之后,可以放弃的事件不能正常工作

执行以下操作:

  1. 拖动可拖动(黄色)在droppables(红色和蓝色),对在事件droppables改变他们的背景颜色为绿色,就出来活动,他们改变自己背景颜色回来。

  2. 将可拖动的内容拖放(蓝色)。

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

我觉得这种行为是一个错误。我应该创建一个错误票吗?

编辑:

,如果我只是设置可投放的选项hoverClass相同的行为也被实现。请参阅以下jsbin。这必须是一个错误,因为行为不一致。在拖放内容后,行为是不同的。

+0

似乎是一个错误。在github中提出它。 jquery ui团队将澄清 – 2015-03-19 12:10:08

+0

其已知问题。看看这个答案[这里](http://stackoverflow.com/questions/17053289/jquery-droppable-greedy-not-working-as-expected#answer-17588198) – 2015-03-19 12:44:41

+0

@AnkitSaroch我不认为这是与此答案有关。答案和已关闭的错误标签状态,如果可拖动的内容是在贪婪可放弃的内部释放的,则所有父元素都不会收到放置事件。在我的jsbin中,这个工作正常,我希望它能像那样工作。但是在将它放入内层droppable并拖拽新内层之后,外层droppable的over事件将不会触发。 – daniatic 2015-03-19 13:04:28

回答

1

我想出了一个解决办法:

通过调查行为,必须有在一个没有在下拉事件发生的事件进行一些逻辑。每次可拖动的进入一个贪婪的droppable时,应用一些逻辑来防止祖先droppables触发他们的drop事件。在每个输出事件中,该逻辑被重置并且在丢弃事件中丢失该重置。所以我从out事件中抽取了所需的部分,并将它们实施到drop事件中。

请参见下面的jsbin

我已经可以不打开一个bug票道歉。如果有人想这样做,请继续。

编辑:

ANKIT Saroch指出,已经有针对此问题的错误票,也有简单的解决方法存在。在问题文本下面查看他的评论。