Это может быть связанный отчет об ошибке, который уже давно существует: http://bugs.jqueryui.com/ticket/3740
Похоже, это происходит в каждом браузере, который я тестировал (Chrome, FF4, IE9).Есть несколько способов обойти эту проблему:
1. Используйте position:absolute;
в вашем css.Абсолютно позиционированные элементы, похоже, не затрагиваются.
2. Убедитесь, что у родительского элемента (события, если это тело) установлено overflow:auto;
.Мой тест показал, что это решение исправляет положение, но отключает функцию автопрокрутки.Вы все еще можете выполнять прокрутку с помощью колесика мыши или клавиш со стрелками.
3. Примените исправление, предложенное в приведенном выше отчете об ошибках, вручную и тщательно протестируйте, если оно вызывает другие проблемы.
4. Ждите официального исправления.Он запланирован на jQuery UI 1.9, хотя в прошлом он несколько раз откладывался.
5. Если вы уверены, что это происходит в каждом браузере, вы можете поставить эти хакив события затронутых draggables, чтобы исправить вычисления.Тем не менее, нужно протестировать множество различных браузеров, поэтому его следует использовать только в крайнем случае:
$('.drag').draggable({
scroll:true,
start: function(){
$(this).data("startingScrollTop",$(this).parent().scrollTop());
},
drag: function(event,ui){
var st = parseInt($(this).data("startingScrollTop"));
ui.position.top -= $(this).parent().scrollTop() - st;
}
});