jQuery sortable(’disable’)来自start事件并不像预期的那样完全正常工作

以下代码不会完全禁用start事件的sortables。 它会将类ui-sortable-disabledui-state-disabled到可排序元素中,但它不会禁用该function – 换句话说,sortables看起来已禁用,但它们仍然接受拖动的项目并且表现得像它们一样已启用。

 var assignedSortables; var startDrag = function(event, ui) { assignedSortables.each(function() {$(this).sortable('disable');}); }; var stopDrag = function(event, ui) { assignedSortables.each(function() {$(this).sortable('enable');}); }; assignedSortables = $(".my-sortable-containers").sortable({ connectWith: '.my-sortable-containers', start: startDrag, stop: stopDrag }); 

我想要这样做的原因是拖动启动是因为我可能需要禁用已经包含被拖动项目的其他已连接的可排序项(为了简化我省略了逻辑)。 这是一个错误还是有办法绕过它?

我刚遇到同样的问题。 通过在启动sortable上调用’refresh’方法,我能够获得我想要禁用的连接sortable(禁用reals)。

所以,在你的开始回调中将是这样的:

 $connectedList.sortable('disable'); $(ui.sender).sortable('refresh'); 

我想在内部列表会在触发启动事件之前获取连接和非禁用列表的集合,并且不会检查触发启动后该列表是否更改。

我没有检查jQuery库是否已经“修复”了,因为我问了这个问题,我做的是使用mousedown和mouseup事件来禁用和启用

 $(".myDraggableContainer").mousedown(functionToDisableTheCorrectSortables).mouseup(functionToEnableSortables); 

这样做实际上会完全禁用接收排序