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

Jer*_*eir 4 javascript jquery jquery-ui sortables jquery-ui-sortable

以下代码不会完全禁用start事件的sortables.它将添加类ui-sortable-disabledui-state-disabled可排序元素,但它不会禁用该功能 - 换句话说,可排序的外观被禁用,但它们仍然接受拖动的项目并且表现得像启用它们一样.

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
});
Run Code Online (Sandbox Code Playgroud)

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

Ken*_*ton 7

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

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

$connectedList.sortable('disable');
$(ui.sender).sortable('refresh');
Run Code Online (Sandbox Code Playgroud)

我想,在内部列表抓住组拼接和非残疾人名单的触发启动事件之前,不会检查是否开始被触发后,该列表中的变化.