jQuery可以使用包含父级和不同的项高度进行排序

时间:2012-07-17 10:23:43

标签: jquery jquery-ui jquery-ui-sortable

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

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

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

我尝试使用其他选项tolerance:'pointer'(我的偏好)但未成功使用默认tolerance:'intersect'

我从docs了解到这是tolerance的预期行为,并且当项目具有相同的高度时,它可以正常工作。

我的方案是否有解决方法,其中第二项的高度高于第一项?

1 个答案:

答案 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),

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