将来の読者のために、ブートストラップ ダイアログのスクロールされた div 内をドラッグすると、ヘルパー要素にオフセットがあるという同様の問題に遭遇しました。ドラッグされたオブジェクトを解放すると、アニメーションは、ページのスクロール部分を考慮せずに、ドラッグされたヘルパー要素を新しい位置に向けて送信します。これは、ユーザーに混乱を招くフィードバックを与えます。
ダイアログコンテナでposition:relativeとoverflow-y:autoで物事を動かし続けるために、私の解決策は
1- ソート開始イベントでヘルパー オブジェクトの margin-top に scrollTop() オフセットを追加します。
2- beforeStop イベントの margin-top を削除します
これにより、ドラッグ後にアニメーションがオフになる問題が修正されましたが、ページのスクロールされた部分をドラッグしている間、ヘルパー オブジェクトがカーソルの下に押し込まれます。最後の修正は
3- ポインターとコンテナー オフセットを基準にして (並べ替えイベントを使用して) ドラッグしているときに、ヘルパー オブジェクトの top プロパティを計算して設定します。
$(...).sortable({
...
start: function (event, ui) {
ui.helper.css('margin-top', $("#mybootstrap-dialog").scrollTop());
},
beforeStop: function (event, ui){
ui.helper.css('margin-top',0);
},
sort: function(event, ui) {
var top = event.clientY - $('#my-sortable-ul').offset().top - $("#mybootstrap-dialog").scrollTop();
ui.helper.css({'top' : top + 'px'});
}
},
...
});
ヘルプこれが役立ちます