我使用 jQuery UI 的默认可排序/可拖动功能进行了简单设置。
我现在需要添加一个“调色板”,它将是所有列表中所有项目的列表(有些可能不在任何列表中)。像这样:
<ul id="palette" class="ui-sortable">
<li class="used">A</li>
<li>B</li>
<li class="used">C</li>
<li class="used">D</li>
<li>E</li>
<li>F</li>
</ul>
<ol id="box1" class="ui-sortable box">
<li>A</li>
<li>D</li>
</ol>
<ol id="box2" class="ui-sortable box">
</ol>
<ol id="box3" class="ui-sortable box">
<li>C</li>
</ol>
目前,调色板没有任何不同 - 将项目拖入和拖出只是移动它们。
我需要的功能是,当我拖出调色板时,它会复制而不是移动,当我拖入调色板时,它会从源列表中删除但不会添加到调色板中。(这些盒子可以存储调色板项目的多个副本。)
我已经使用 sortable 的receive
事件来创建可以完成所有这些操作的东西 - 我在下面添加了它作为答案 - 但我想要一些我现有的解决方案不提供的东西:
- 从拖动开始时保留(至少在视觉上)调色板中的项目(而不是在拖放后恢复它)。
- 保留原始调色板顺序,防止可排序性(但保留从盒子与其连接的能力)。
谁能建议如何最好地实施这些?