【问题标题】:Force order between two jquery UI sortable lists两个 jquery UI 可排序列表之间的强制顺序
【发布时间】:2015-04-09 08:19:35
【问题描述】:

奇怪这个问题以前没有被问过,至少我没能找到它。

我有多个列表或元素,它们都使用 jQuery UI 可排序连接在一起。它的一切都按照文档所说的那样工作,但是我想让列表强制排序。例如,当加载每个列表时,项目按日期排序。当您将项目从列表 1 移动到列表 2 时,您可以将该项目放置在列表中的任何位置,而不管其日期如何。同样,您可以在同一个列表中移动项目,使它们的顺序过时。

有没有办法让它计算日期排序并在项目移动后以正确的顺序呈现项目?

一旦一个项目从一个列表移动到另一个列表,它会执行一个 ajax 请求以将该项目保存到该列表,一个可能的解决方案是该请求以排序顺序返回该列表,然后重新呈现该列表,但是,这似乎不是一种特别干净的方法,因为您已经拥有了所有数据。

有任何更简单/更好的方法吗?如果它也可以防止在同一个列表中重新排序,那将是理想的。

谢谢。

【问题讨论】:

  • 可排序 UI 的全部意义在于让用户根据自己的喜好重新排序项目,因此您不应该对以前没有被询问过的项目感到惊讶。在每次更新时强制使用新的排序顺序会破坏此功能。您可能有一个确实需要这样做的场景,但您必须手动编写该部分。
  • 就您所描述的而言,sortable 太过分了。您可以只使用draggable/droppable 并使用drop 回调来找到正确的附加位置

标签: javascript jquery jquery-ui jquery-ui-sortable


【解决方案1】:

JQuery Sortable 不处理您试图实现的行为。你必须自己做。我认为接收事件处理程序是一个很好的起点。您可以使用 ui.item.prev() 和 ui.item.next() 检索上一个和下一个元素,然后检查插入点是否符合您的要求并将元素插入该位置或将元素转回原来的位置列表/位置 ( $(ui.sender).sortable("cancel"); )

【讨论】:

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