下面的代码并没有完全禁用开始事件中的排序。它会将类 ui-sortable-disabled
和 ui-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
});
我想在拖动开始时这样做的原因是因为我可能需要禁用其他已包含被拖动项目的已连接可排序项(为了简化,我删除了逻辑)。这是错误还是有解决办法?
最佳答案
我刚遇到同样的问题。通过调用启动排序的“刷新”方法,我能够获得我想要禁用的已连接排序以禁用(实际上)。
所以,在你的开始回调中会是这样的:
$connectedList.sortable('disable');
$(ui.sender).sortable('refresh');
我猜想在启动事件被触发之前,列表在内部获取了一组已连接和未禁用的列表,并且不会检查该列表是否在触发启动后发生变化。
关于javascript - jQuery sortable ('disable' ) from start event 不完全像预期的那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1189945/