3

このjsFiddleと一緒にこの質問を読んでください。

ドラッグ中に親コンテナ内にアイテムを含めたいjQuery Sortableリストがあります-問題ありません-containment:'parent'オプションを使用します。

ただし、2 番目のアイテムの高さが最初のアイテムの高さより大きい場合、2 番目のアイテムを最初の位置にドラッグできません。

追加のオプションtolerance:'pointer'(私の好み) を使用しようとして失敗しましたが、デフォルトでは機能しませんtolerance:'intersect'

ドキュメントから、これは予想される動作でtoleranceあり、アイテムの高さが等しい場合は完全に正常に機能することを理解しています。

2 番目のアイテムの高さが最初のアイテムよりも大きいシナリオの回避策はありますか?

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 に答える