请将此问题与此 jsFiddle 一起阅读.
我有一个 jQuery 可排序列表,我想在拖动时将项目包含在父容器中 - 没问题 - 我使用 containment:'parent'
选项。
但是,当第二个项目的高度大于第一个项目的高度时,我无法将第二个项目拖动到第一个位置。
我尝试使用附加选项tolerance:'pointer'
,但没有成功(我的偏好)它也不适用于默认的 tolerance:'intersect'
.
我从 docs 了解到这是 tolerance
的预期行为当项目具有相同高度时,工作绝对正常。
对于第二个项目的高度高于第一个项目的情况,是否有解决方法?
最佳答案
添加选项 cursorAt: { top:1 }
可以解决该问题。链接至 docs .
不幸的是,我随后发现在尝试将一个高项目拖到列表底部时存在同样的问题。
最后我的解决方案是破解 jquery.ui.sortable.js
中的 _intersectsWithPointer
函数。
我已经替换了:
var c = this.options.axis === "x"|| a.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, b.top, b.height),
与:
var c = this.options.axis === "x"|| a.ui.isOverAxis(this.positionAbs.top + (this._getDragVerticalDirection() == "up"? 0 : this.helperProportions.height), b.top, b.height),
现在,向上或向下拖动任何高度的任何项目都可以正常工作。
关于jQuery 可排序,包含父级和不同的项目高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11520532/