我有以下 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
s#list
从#timeline
.item
s 可以根据需要多次放入时间线,例如。时间线中可能有 4 个项目#i1
。.item
时间轴中的 s 不能相互重叠.item
s 可以放置在时间轴上的任何位置,只要它们不与时间轴上的任何其他项目重叠
所以我选择了 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(添加一个项目的多个副本)。但是我需要像 Collision Plugin 这样的东西,这样我才能实现#3(项目不重叠)。
有人知道这个问题的解决方案吗?是否有另一个插件可以对可拖动对象的助手进行碰撞检测?是否有另一种方法可以尝试获得我想要实现的目标?