老問題,但我這個掙扎了幾個小時,所以今天我想我會分享我學到了。
可排序滾動是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