Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 强制两个jquery UI可排序列表之间的顺序_Javascript_Jquery_Jquery Ui_Jquery Ui Sortable - Fatal编程技术网

Javascript 强制两个jquery UI可排序列表之间的顺序

Javascript 强制两个jquery UI可排序列表之间的顺序,javascript,jquery,jquery-ui,jquery-ui-sortable,Javascript,Jquery,Jquery Ui,Jquery Ui Sortable,很惊讶这个问题以前没人问过,至少我没能找到它 我有多个列表或元素,它们都使用jQuery UI sortable连接在一起。它的所有工作,正如文件所说,它应该,但我想让名单的力量排序。例如,加载每个列表时,项目按日期排序。将项目从列表1移动到列表2中时,可以将该项目放置在列表中的任何位置,而不考虑其日期。同样,您可以移动同一列表中的项目,使其过期 是否有一种方法可以让它计算订购日期,并在物品移动后以正确的顺序呈现物品 一旦一个项目从一个列表移动到另一个列表,它就会执行一个ajax请求将该项目保存

很惊讶这个问题以前没人问过,至少我没能找到它

我有多个列表或元素,它们都使用jQuery UI sortable连接在一起。它的所有工作,正如文件所说,它应该,但我想让名单的力量排序。例如,加载每个列表时,项目按日期排序。将项目从列表1移动到列表2中时,可以将该项目放置在列表中的任何位置,而不考虑其日期。同样,您可以移动同一列表中的项目,使其过期

是否有一种方法可以让它计算订购日期,并在物品移动后以正确的顺序呈现物品

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

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


谢谢。

JQuery Sortable无法处理您试图实现的行为。你必须自己做。我认为receive eventHandler是一个很好的起点。您可以使用ui.item.prev和ui.item.next检索上一个和下一个元素,然后检查插入点是否符合您的要求,并将元素插入到该位置,或将元素返回到其旧列表/位置$ui.sender.sortablecancel

可排序UI的全部目的是让用户根据自己的喜好对项目进行重新排序,这样您就不必太惊讶以前没有人问过。在每次更新时强制执行新的排序顺序会破坏此功能。您可能有一个场景确实需要这样做,但您必须手动编写该部分的代码。您可以使用draggable/droppable并使用drop回调来找到正确的追加位置