OK, je suis de nouveau en train de jouer avec le plugin Sortable de @ RubaXa (et j’espère qu’il est quelque part ici, car celui-ci est simplement assez compliqué …)
Quelques découvertes (il m’a fallu un certain temps pour bien comprendre le mécanisme, mais je pense avoir tout à fait raison)
si nous définissons une div
avec un contenu de même type, elle est immédiatement sortingable. Par exemple:
HTML
Item 1
Item 2
JavaScript
new Sortable(document.getElementById("myContainer"));
Démo: http://jsfiddle.net/b02wfe4o/
si nous définissons une div
avec des contenus de types différents (par exemple, h2
s et h3
s, nous devons également spécifier la classe draggable
. Par exemple:
HTML
Item 1
Item 2
JavaScript
new Sortable(document.getElementById("myContainer"), { draggable: '.myDraggable' });
Démo: http://jsfiddle.net/qemz00eq/1/
si nous définissons 2 (ou plus) div
s côte à côte, cela fonctionne à peu près de la même manière. Par exemple:
HTML
Item 1.1
Item 1.2
Item 2.1
Item 2.2
JavaScript
new Sortable(document.getElementById("myContainer1"), { draggable: '.myDraggable' }); new Sortable(document.getElementById("myContainer2"), { draggable: '.myDraggable' });
Démo: http://jsfiddle.net/qeyxxj4y/
Maintenant, que faire si sortable A est un enfant de sortable B?
HTML
Item 1.1
Item 1.2
Item 2.1
Item 2.2
JavaScript
new Sortable(document.getElementById("myContainer1"), { draggable: '.myDraggable' }); new Sortable(document.getElementById("myContainer2"), { draggable: '.myDraggable' });
Démo: http://jsfiddle.net/j7fesLkp/8/
Eh bien, maintenant cela ne fonctionne pas comme prévu:
myContainer2
éléments myContainer2
peuvent être déplacés / sortingés parfaitement dans leur conteneur. Ce qui va bien. myContainer1
éléments myContainer1
peuvent également être déplacés dans myContainer2
. Je veux dire prendre l’élément 1.1 et le placer à l’intérieur de myContainer2
, ce qui n’était pas le cas lorsque les deux conteneurs étaient côte à côte. Alors, comment pouvons-nous désactiver ce comportement? Je veux dire: les articles de chaque conteneur doivent se déplacer UNIQUEMENT dans ce conteneur et non dans ses enfants.
Comment cela peut-il être fait?
Tu vas donner pour séparer les sortables, et les diviser en deux groupes différents. Changez donc la classe d’un des groupes en HTML et en Js pour les initialiser comme un autre groupe.