jQuery可排序-禁用单个项

jQuery可排序-禁用单个项,jquery,jquery-ui-sortable,Jquery,Jquery Ui Sortable,我有一些可拖动元素的列表。当用户将任何元素移动到新位置时,将调用$.ajax,以便服务器可以记录元素的位置变化。虽然我可以对整个列表禁用排序,但我只想在$.ajax收到成功消息之前对移动的元素禁用排序 update: function(event, ui) { ui.item.sortable('disable'); $.ajax({options}, success: function() { ui.item.sortable('enable'); }); } 到目前为止

我有一些可拖动元素的列表。当用户将任何元素移动到新位置时,将调用$.ajax,以便服务器可以记录元素的位置变化。虽然我可以对整个列表禁用排序,但我只想在$.ajax收到成功消息之前对移动的元素禁用排序

update: function(event, ui) {
  ui.item.sortable('disable');
  $.ajax({options}, success: function() {
    ui.item.sortable('enable');
  });
}

到目前为止,我已经做了很多研究,只能禁用整个列表。任何关于我做错了什么的建议,或者这是不可能的?

Sortable的cancel设置允许您使用选择器取消可排序呼叫。我添加了以下行--

取消:'.正在更新'

…然后我围绕$.ajax调用添加和删除类


我不知道昨天一整天我怎么会错过这个D/

对列表进行排序会影响该列表中的所有项目,因此在记录更改之前禁用整个列表是有意义的。您的另一个选择可能是将状态存储在客户端并记录一次更改(例如,通过单击按钮)。要详细说明@randy的注释,您的设计相当于将AJAX请求与每个单独的元素而不是整个列表相关联。即使这是可能的(而且很可能是),您也不能保证AJAX请求将以发送的相同顺序到达服务器。第二次拖动操作的请求可能会在第一次拖动操作的请求之前被接收和处理,这可能不是您想要的。是的,我理解这一点,现在考虑到这一点,我可能最终会同意这一点。目前,使用我在下面找到的答案,它工作得相当好,直到你将自己的方式拖到崩溃。在搜索了将ajax请求排队的方法之后,我偶然发现了一些插件。这个ajaxQueue插件看起来可以做到这一点。因此,随着排序表的移动,它们将被禁用,直到ajax请求成功为止,所有这些都是按照移动顺序进行的D