Jquery UI可排序,滚动(jsFiddle示例)

jor*_*cke 2 css jquery jquery-ui overflow jquery-ui-sortable

我想弄清楚如何在拖动列表元素时让我的'可排序列表'滚动.

滚动列表中的正常工作,我拖着,但没有在列表中,我拖.

http://jsfiddle.net/jordanbaucke/pacbC/1/

提出类似问题的另一个问题:

jQuery可排序容器滚动div与溢出auto

PS.Pivotaltracker,www.pivotaltracker.com做得很好.

Rak*_*n42 7

老问题,但我今天几个小时都在努力,所以我想我会分享我学到的东西.

可排序滚动是scrollParent的偏移量,当前滚动位置,当前项目位置和scrollSensitivity的函数.开始拖动时,sortable执行_mouseStart.这将设置scrollParent并缓存当前排序的偏移量.有了这些知识,我们可以在over事件处理程序中进行小规模的随机操作:

over: function (event, ui) {
    ui.item.data('sortableItem').scrollParent = ui.placeholder.parent();
    ui.item.data('sortableItem').overflowOffset = ui.placeholder.parent().offset();
}
Run Code Online (Sandbox Code Playgroud)

当被拖动的元素更改容器时过度触发.当您点击结束事件时,占位符已移至新容器.代码获取新的scrollParent并重新获取偏移量.

为了简洁起见,我把Tats_innit的小提琴分开了:http://jsfiddle.net/3E2Hg/84/

scrollParent在整个事件结构的其他地方被引用,所以我不确定这是不是防弹的.不过,我认为这是一个很好的起点.如果我遇到任何陷阱,我会更新这个答案.

  • 我爱你.对于可能非常棘手的问题,这是一个非常干净的解决方案.我还没有遇到任何陷阱,它对我来说开箱即用!如果我发现有什么奇怪的话会更新. (2认同)