2012-07-17 16 views
3

請與本jsFiddle一起看這個問題。jQuery的排序與遏制家長和不同項目的高度

我有一個jQuery可排序列表,其中我想拖動時包含在父容器中的項目 - 沒有問題 - 我使用containment:'parent'選項。

但是,當第二個項目的高度大於第一個項目的高度時,我無法將第二個項目拖動到第一個位置。

我曾嘗試不成功使用附加選項tolerance:'pointer'(我的偏好),也沒有使用默認tolerance:'intersect'工作。

我從docs瞭解到這是tolerance的預期行爲,並且在項目具有相同高度時絕對正常。

是否有我的方案,其中第二項比第一項大的高度解決方法?

回答

3

添加選項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),

現在拖動任何高度上調的任何項目或向下的作品精絕。

相關問題