私は次のHTMLを持っています:
<div class="list" id="list">
<div class="item" id="i1">Item 1</div>
<div class="item" id="i2">Item 2</div>
<div class="item" id="i3">Item 3</div>
</div>
<div class="timeline" id="timeline">
</div>
jQueryでできるようにしたいのは、次のとおりです。
.item
からに#list
をドラッグできる#timeline
.item
s は、必要に応じて何度でもタイムラインにドロップできます。#i1
タイムラインには4 つのアイテムが存在する可能性があります。.item
タイムライン内の は互いにオーバーラップしてはなりません.item
は、タイムライン上の他のアイテムと重ならない限り、タイムラインに沿って任意の場所に配置できます
だから私は jQueryUI の Draggable と Droppable を選び、jQueryUI Draggable Collision Pluginも使いました。
これが私が始めたjQueryです:
$('#list .item').draggable({
helper: 'clone',
revert: 'invalid',
//the following are for the jquery-ui-dragggable-collision plugin
obstacle: '#timeline .item',
preventCollision: true
});
$('#timeline').droppable({
accept: '.item'
});
私の問題は、jQueryUI Draggable Collision Plugin は、元の Div 自体をドラッグしていて、ヘルパーをドラッグしていない場合にのみ機能することです。#2(1つのアイテムの複数のコピーを追加)を達成できるようにヘルパーが必要です。しかし、#3 (項目が重なっていない) を達成できるように、Collision Plugin のようなものが必要です。
この問題の解決策を知っている人はいますか? ドラッグ可能なオブジェクトのヘルパーで衝突検出を行う別のプラグインはありますか? 達成したいことを達成するために試みることができる別のアプローチはありますか?