この問題と戦った後、私は助けを求めるしかないのです!私の状況はこれです:私は絶対に配置された要素をいくつか持っています。これらの各要素には、独自の属性「top」と「left」があります。私がこれで抱えている大きな問題は、アイテムを並べ替えようとするときです。
$(".container").sortable({
containment: ".container",
cursor: 'move',
items: '.element',
helper: 'clone',
placeholder: 'new-placeholder',
forcePlaceholderSize: true,
tolerance: 'pointer',
revert: true,
scroll: false,
start: function(event, ui) {
event.stopPropagation();
$(".new-placeholder").css("left", ui.helper.position().left);
$(".new-placeholder").css("top", ui.helper.position().top);
$(".new-placeholder").css("height", ui.helper.height());
$(".new-placeholder").css("width", ui.helper.width());
},
change: function(event, ui) {
console.log("Placeholder index: " + ui.placeholder.index());
}
}).disableSelection();
ご覧のとおり、ドラッグされた要素がオンになると、要素の位置が変わるはずです。これを行うためのより良い方法はありますか?私は絶対的な位置を取り除くことができません、それが主な問題です。解決策はメソッドの変更、更新、停止にある必要があることは知っていますが、これを自分で理解することはできません。
これまでのところ、アイテムが別の要素の上にドラッグされているときにプレースホルダーの新しいインデックスを取得するだけでしたが、プレースホルダーの位置を変更し、それに応じて残りの要素を並べ替えるにはどうすればよいですか?