【发布时间】:2018-08-21 09:06:02
【问题描述】:
我正在制作一个 jQuery UI sortable,我需要检测一个元素何时被拖出。听起来完全像 out event 的工作 - 除了我自己最初错过的一个小评论:
注意:当可排序的项目被删除时也会触发此事件。
这对我来说是一个重要的展示。每当项目只是重新排列时,被拖动的项目仍然最后会得到一个out 事件。我一直在绞尽脑汁,但到目前为止还没有。 我如何检测 out 事件是因为该项目真的被拖到外面,还是仅仅是因为拖动操作正在停止?
(如果重要,jQuery UI 版本 1.11.4)
添加:
好吧,我想我自己成了“只剩下最后一个荒谬的部分”陷阱的受害者。我试图做的是有两个可以在它们之间拖动项目的可排序对象。与the example 类似,但当项目被拖到所有可排序对象之外时,占位符会完全消失。这就是为什么我想跟踪哪些物品在里面,哪些物品在外面。
我最终解决它的方法是放弃这个“要求”。无论如何,如果占位符保留会更好,因为它会显示释放鼠标时项目将被放置到的位置 - 即使它在外面。
但是,如果我确实想保持这条路,我现在看到正确的解决方案是在 out 事件上隐藏占位符,并在 over 事件上显示它。即使开始拖动,也有over,尽管没有从外部拖动任何项目。
不管怎样,虽然这两种方法都可以解决我的真正的问题,但它们都没有真正回答我提出的问题,所以我会让它留下来。
【问题讨论】:
-
当您遇到
out事件时,您可以查看是否存在占位符并将其删除。over的一部分是ui.sender以及ui.position。因此,您可以找到已结束的可排序位置,如果ui.position在边界内,则该目标将获得占位符。
标签: javascript jquery jquery-ui jquery-ui-sortable