для будущих читателей
Я столкнулся с подобной проблемой, когда вспомогательный элемент имеет смещение при перетаскивании внутри прокручиваемого div диалогового окна начальной загрузки. При освобождении перетаскиваемого объекта анимация отправляет перетаскиваемый вспомогательный элемент в его новую позицию без учета прокручиваемой части страницы, что дает пользователям путаницу.
Чтобы все работало с позицией: относительной и переполнением-у: авто в диалоговом контейнере, мое решение было
1 - добавить смещение scrollTop () к верхнему краю вспомогательного объекта в событии начала сортировки;
2 - убрать верхнюю границу в событии beforeStop
Это исправило отключение анимации после перетаскивания, но вспомогательный объект помещался ниже курсора при перетаскивании прокручиваемой части на странице. Последнее исправление
3 - Вычислить и установить свойство top вспомогательного объекта при перетаскивании (используя событие сортировки) относительно указателя и смещения контейнера.
$(...).sortable({
...
start: function (event, ui) {
ui.helper.css('margin-top', $("#mybootstrap-dialog").scrollTop());
},
beforeStop: function (event, ui){
ui.helper.css('margin-top',0);
},
sort: function(event, ui) {
var top = event.clientY - $('#my-sortable-ul').offset().top - $("#mybootstrap-dialog").scrollTop();
ui.helper.css({'top' : top + 'px'});
}
},
...
});
Помогите, это помогает