请与此jsFiddle一起阅读此问题。
我有一个jQuery Sortable列表,我想在拖动时包含父容器中的项目 - 没问题 - 我使用containment:'parent'
选项。
但是,当第二项的高度大于第一项的高度时,我无法将第二项拖到第一个位置。
我尝试使用其他选项tolerance:'pointer'
(我的偏好)但未成功使用默认tolerance:'intersect'
。
我从docs了解到这是tolerance
的预期行为,并且当项目具有相同的高度时,它可以正常工作。
我的方案是否有解决方法,其中第二项的高度高于第一项?
答案 0 :(得分:3)
添加选项cursorAt: { top:1 }
可解决此问题。链接到docs。
不幸的是,我后来发现在尝试将高项目拖到列表底部时存在同样的问题。
最后,我的解决方案是破解_intersectsWithPointer
中的jquery.ui.sortable.js
功能。
我已经取代:
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),
现在向上或向下拖动任何高度的任何项目都可以正常工作。