【问题标题】:Over event of droppable isn't working correctly, after draggable is dropped on greedy droppable and dragged again在将可拖放对象拖放到贪婪可拖放对象上并再次拖动后,可拖放事件的过度事件无法正常工作
【发布时间】:2015-03-19 12:04:37
【问题描述】:

不触发over事件的情况最好用下面的jsbin来解释。

执行以下操作:

  1. 将可拖动对象(黄色)拖到可放置对象(红色和蓝色)上,在 over 事件中,可放置对象将其背景颜色更改为绿色,在 out 事件中,它们将背景颜色更改回来。

  2. 将可拖动对象拖放到内部 droppable(蓝色)上。

  3. 将可拖动对象拖到外部可放置对象(红色)上,它应该将其背景颜色更改为绿色,但事实并非如此! over 事件不会被触发,但是当您再次离开外部 droppable 时,它​​的 out 事件会触发。从那里开始,它再次按预期工作。

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

编辑:

如果我只为可放置选项设置一个 hoverClass,也会实现相同的行为。请参阅以下jsbin。这必须是一个错误,因为行为不一致。将可拖动对象放入内部可放置对象后,行为有所不同。

【问题讨论】:

  • 似乎是一个错误。在github中提出它。 jquery ui 团队会澄清
  • 这是一个已知问题。看看这个答案here
  • @AnkitSaroch 我认为这与此答案无关。答案和已关闭的 bug 票状态,如果可拖动对象在贪婪的 droppable 内部释放,则所有父元素都不会收到 drop 事件。在我的 jsbin 中,它工作正常,我希望它像那样工作。但是在将其放入内部 droppable 并拖动一个新的后,外部 droppable 的 over 事件不会触发。
  • 抱歉,一开始答错了,这个问题已经有票了。 bugs.jqueryui.com/ticket/10111
  • @AnkitSaroch 谢谢。这完全是同一个问题!

标签: javascript jquery jquery-ui


【解决方案1】:

我想出了一个解决方法:

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

查看以下jsbin

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

编辑:

Ankit Saroch 指出,已经有针对此问题的错误票证,并且存在更简单的解决方法。检查问题文本下方的评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多