ul
ドラッグ可能なアイテム、(#doc-editor-options ul li)
それらのアイテムをドロップするための領域、およびそれらのアイテム(#doc-editor-content)
をul
保持するためのその領域内に、並べ替え可能なアイテム(#items-holder)
があります。このドラッグアンドドロップは一方向のみであり、リストのアイテムのみをホルダーにドラッグアンドドロップできます。
$("#doc-editor-options ul li").draggable({
helper: 'clone',
connectToSortable: '#item-holder',
containment: $(".doc-editor")
});
$("#doc-editor-content").droppable({
drop: function(e, ui){
console.log('dropped');
}
});
$("#item-holder").sortable({
placeholder: 'placeholder-highlight',
cursor: 'pointer',
});
私が持っている2つの質問:
- 現在、リストからアイテムをドラッグして他のリストにドロップすると、の
drop
コールバック.droppable()
が2回呼び出されます。#item-holder
これは、ソート可能であることと関係があると思います。event
アイテムをリストにドロップし、そのアイテムとui
コールバックについてのみ知っている場合にのみ起動されるようにします。 items-holder
デフォルトでソートできない機能も必要です。並べ替え可能になるのは、アイテムをドラッグしてホバーしているときだけです。そのため、デフォルトではリストを並べ替えることはできませんが、アイテムをリストにドラッグすると、そのアイテムをリスト内のどこに配置するかを選択でき(つまり、リストは並べ替え可能になります)、一度ドロップすると、リストは並べ替えできなくなりますまた。
編集:私は#2を理解しました、私mousedown
はソートを有効にしてからそれを無効にするドラッグ可能なアイテムにバインドする必要がありましたmouseup
。#1でまだ問題が発生しているので、アイテムをアイテムホルダーにドロップしたり、アイテムホルダーからホバーしたりすると、一部のsortable
イベントでコールバックが発生しているようです。drop