Question

J'ai un tableau HTML ainsi:

up | dn
[ ]  Item 1
[x]  Item 2
[ ]  Item 3
[ ]  Item 4
[x]  Item 5
[ ]  Item 6
[ ]  Item 7

Si 2 & amp; 5 sont vérifiés et je clique, le résultat est:

up | dn
[x]  Item 2
[x]  Item 5
[ ]  Item 1
[ ]  Item 3
[ ]  Item 4
[ ]  Item 6
[ ]  Item 7

Si je clique sur dn, le résultat est le suivant:

up | dn
[ ]  Item 1
[ ]  Item 3
[ ]  Item 4
[ ]  Item 6
[x]  Item 2
[x]  Item 5
[ ]  Item 7

En d'autres termes, les éléments sont regroupés dans la direction choisie, puis déplacés d'une ligne dans cette direction. Quelqu'un at-il un bon algorithme pour cela? Je suis sûr que je peux écrire quelque chose sans trop de difficulté, mais cela semble être le genre de chose qui devrait être & "Là-bas &"; ....

.
Était-ce utile?

La solution

Je pense que je penche pour une approche copier-coller, car les frameworks js facilitent le déplacement des morceaux de DOM.

  • obtenir les lignes des éléments vérifiés
  • obtenir l'index de l'item {top} le plus vérifié
  • supprime les lignes & amp; insérez-les dans la table à {index-1}
  • (bien sûr, top pourrait être en bas, et index-1 est plus complexe en fonction de la direction et si nous sommes déjà à l'extrême ou non)

Autres conseils

Cela ressemble à une tâche de tri à plusieurs clés. Vous pouvez utiliser quelque chose comme l'interface Sortable de jQuery UI. Votre condition de tri serait quelque chose comme: a.selected & Lt; = & Gt; b.selected & amp; & amp; a.index < = > b.index.

Ignorer: vous souhaitez utiliser l’ algorithme de Fisher Yates Shuffle .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top