老问题,但我这个挣扎了几个小时,所以今天我想我会分享我学到了。
可排序滚动是scrollParent的偏移量,当前滚动位置,当前项目位置和scrollSensitivity的函数。可开始拖动时,可排序执行_mouseStart。这将设置scrollParent并缓存当前排序的偏移量。有了这些知识,我们可以在在事件处理程序做一个小的洗牌:
over: function (event, ui) {
ui.item.data('sortableItem').scrollParent = ui.placeholder.parent();
ui.item.data('sortableItem').overflowOffset = ui.placeholder.parent().offset();
}
在火灾时,被拖动的元素改变容器。当您遇到over事件时,占位符已经移至新容器。代码获取新的scrollParent并回收偏移量。
我分叉Tats_innit的小提琴为简洁起见:http://jsfiddle.net/3E2Hg/84/
的scrollParent获取整个事件结构中的其他地方引用,所以我不知道这是防弹的。不过,我认为这是一个很好的起点。如果我遇到任何问题,我会更新此答案。
将项目1和3放置在第二个滚动框中。然后,将两个滚动条都设置为高。现在,您无法将第2项从第一个滚动框拖放到第二个滚动框的8/9之间,因为滚动条高度不同。也许解决方法是将滚动框1中的临时设置高度设置为滚动框2的长度以上。 – arttronics
Hiya @arttronics howz it going? :)是因为'on'甚至绑定到'this'对象,即当列表变得不相等时,用户拖动的div可以是:将其拖动到div,然后将其滚动到底部或可能使用'this'对象来玩,并且始终选择较大的容器作为滚动引用,尽管为评论欢呼。 –
这太糟糕了,它是一个非工作演示报告在其他[** SO答案**](http://stackoverflow.com/questions/10986159/automatically-scroll-droppable-div-whilst-dragging/10986522# 10986522)你昨天提供了很多用户。 ** - 1 **为无用的答案。 – arttronics