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

问题描述 投票:4回答:2

以下代码不会完全禁用start事件的sortables。它会将类ui-sortable-disabledui-state-disabled添加到可排序元素中,但它不会禁用该功能 - 换句话说,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
});

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

javascript jquery jquery-ui jquery-ui-sortable sortables
2个回答
7
投票

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

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

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

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


4
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.