J'ai une configuration simple en utilisant la fonctionnalité sortable/draggable par défaut de jQuery UI.Interface utilisateur jQuery triable/déplaçable - avec palette (copier/supprimer au lieu de déplacer)
J'ai maintenant besoin d'ajouter une 'palette' qui sera une liste de tous les éléments de toutes les listes (et d'autres qui ne figurent dans aucune liste). Comme ceci:
<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>
Pour l'instant, la palette ne fait rien de différent - faire glisser les éléments dans et hors les déplace simplement.
La fonctionnalité dont j'ai besoin est que lorsque je fais glisser hors de la palette, il copie plutôt que de bouger, et lorsque je glisse dans la palette, il disparaît de la liste source mais ne l'ajoute pas à la palette. (Les boîtes peuvent stocker plusieurs copies d'éléments de palette.)
J'ai utilisé l'événement receive
du sortable pour créer quelque chose qui fait tout cela - et j'ai ajouté cela comme une réponse ci-dessous - mais Je veux des choses qui ma solution existante ne fournit pas:
- chasse gardée (visuellement, au moins) l'élément dans la palette du début de traînée (plutôt que de le restaurer après la chute).
- persiste l'ordre d'origine de la palette, empêchant la triabilité (mais préservant la possibilité de se connecter avec des boîtes).
Quelqu'un peut-il suggérer la meilleure façon de les implémenter?