【问题标题】:jQuery UI - How to know if dragged element is on top of element #x?jQuery UI - 如何知道拖动的元素是否在元素 #x 之上?
【发布时间】:2009-07-27 06:38:44
【问题描述】:
我有多个可拖动元素,我不希望它们被放在彼此之上。我希望拖动的元素在拖动时显示为浅绿色,但是一旦它超过具有特定类的元素,它就会变成红色。如果它被丢弃,它将恢复到原来的位置。
其他一切都很简单,但我需要一个事件来“输入”另一个元素。
我还没有找到任何集成功能或插件来解决我的问题。
除了记录所有元素的位置和大小,然后在拖动事件中与它们进行比较之外,我自己想不出任何其他方法来做到这一点。然而它会很重,拖起来会很痛苦。
那么,有什么建议吗?可能是我没找到的插件? :)
【问题讨论】:
标签:
jquery
jquery-ui
drag-and-drop
draggable
【解决方案1】:
我怀疑插件是必要的。您还没有描述与使用 vanilla jQuery UI 已经可以处理的行为有任何不同的拖放行为。
据我了解,您有一堆具有共同目的的可拖动对象,但它们的可放置对象需要根据被拖动的对象进行更改。所需要的只是挂钩到可拖动对象的 start 事件,并有条件地更改您希望它们使用的可放置对象的 accept 选项。
我自己运行一个快速测试,如果 jQuery UI 超过了一个 droppable,似乎 jQuery UI 不会再将任何 CSS 类插入到 draggable-helper 中,所以当它结束时你不能使用纯 CSS 来改变帮助器的颜色一个可丢弃的。
但是,您可以简单地使用 over 和 out你的 droppables 的 strong> 方法来添加和删除一个类到 draggable-helper。由于您将在拖动开始时设置 accept 选项(如我之前所述),因此 over 方法只会在您想要的元素上调用> 要更改的助手的颜色。
抱歉,我没有发布任何代码示例,但希望解释对您有所帮助。