【问题标题】:JQuery Sortable "Out" EventJQuery 可排序“Out”事件
【发布时间】:2026-02-04 14:45:01
【问题描述】:

我有两个 HTML 无序列表,我将它们用作购物车以及 jQuery 可拖动和可排序,如他们的网站演示所示。

我们有一个要求,如果用户将一个项目拖到购物车的选定项目之外,它应该被移除。

我们还使用 MVC 5 和 Ajax 来为每个已完成的操作更新购物车...如果将一个项目拖到选定的项目中,它会立即添加到数据库表或缓存中。如果一个项目在选定项目列表中排序,我们会捕获旧索引和新索引,并立即更新后端的优先级值。这两个功能运行良好。

我遇到的问题是,根据文档 (https://api.jqueryui.com/sortable/#event-out) 并通过 Inspect Element 证明,jQuery 可排序的“Out”事件可能会在两种不同的情况下触发:

  1. 如果可排序项目被拖到其容器之外。

  2. 如果可排序的项目被丢弃。

如果我错了,请纠正我,但第二次触发 out 事件对我来说没有意义。如果用户开始移动一个项目,但随后没有移动项目并释放鼠标,“out”事件也会触发。

您如何准确确定可排序项目是否已被拖放到其容器列表之外(未在其容器内移动)?

【问题讨论】:

  • 如果你创建jsfiddle很容易,请做。
  • receive: "当已连接的可排序列表中的项目被放入另一个列表时触发此事件。后者是事件目标。"
  • 或者,您可以在sortstart 上设置一个参数,例如“ogParent”,并在sortstop 上使用.isSameNode() 检查新的可排序父级是否等于“ogParent”,例如this

标签: jquery jquery-ui-sortable draggable


【解决方案1】:

我们的解决方案是放弃使用 JQuery UI 进行排序和拖放操作。

我们使用了 sortable.js,它在处理排序和拖放事件方面似乎更加清晰。

【讨论】: