3

请与此jsFiddle一起阅读此问题。

我有一个 jQuery 可排序列表,我想在拖动时包含父容器中的项目 - 没问题 - 我使用该containment:'parent'选项。

但是,当第二个项目的高度大于第一个项目的高度时,我无法将第二个项目拖到第一个位置。

我尝试使用附加选项tolerance:'pointer'(我的偏好)但未成功,它也不适用于默认的tolerance:'intersect'.

我从文档中了解到,这是预期的行为,tolerance并且在项目具有相同高度时工作得非常好。

对于第二个项目的高度大于第一个项目的情况,是否有解决方法?

4

1 回答 1

3

添加选项cursorAt: { top:1 }可以解决问题。链接到文档

不幸的是,我随后发现在尝试将高项目拖到列表底部时存在同样的问题。

_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),

现在向上或向下拖动任何高度的任何项目都可以正常工作。

于 2012-07-18T08:42:43.010 回答