これは現在、単なる概念ですが、私の頭を悩ませています。
私がアイテムのリストを持っている場合、それは HTML/JS の実装だと思いますが、それは私が視覚的に考える人だからです ;)
ドラッグ アンド ドロップを使用してこのリストを並べ替え、完了したら新しい順序を保存することを目的としています。アイテムに番号を付けずにこれを行う方法はありますか?ドロップされたアイテムの数とそれに続くすべてのアイテムを更新しますか? すごく非効率じゃないですか?
これは現在、単なる概念ですが、私の頭を悩ませています。
私がアイテムのリストを持っている場合、それは HTML/JS の実装だと思いますが、それは私が視覚的に考える人だからです ;)
ドラッグ アンド ドロップを使用してこのリストを並べ替え、完了したら新しい順序を保存することを目的としています。アイテムに番号を付けずにこれを行う方法はありますか?ドロップされたアイテムの数とそれに続くすべてのアイテムを更新しますか? すごく非効率じゃないですか?
パフォーマンスに関する限り、要素の番号付けを変更することは、(要素をドラッグしているときに) 実際にトランジションをレンダリングすることに他ならないので、非効率的ではありません。
コレクションの順序を変更するために必要な操作の量を最小限に抑えるために、双方向にリンクされたリストを使用できます。
JavaScript フレームワークを使用して作業を行うことをお勧めします。
KnockoutJSはあなたのニーズに合うはずです (ウェブサイトから):
Knockout は、基盤となるクリーンなデータ モデルを使用して、リッチでレスポンシブな表示とエディターのユーザー インターフェイスを作成するのに役立つ JavaScript ライブラリです。動的に更新される UI のセクションがある場合 (たとえば、ユーザーのアクションや外部データ ソースの変更に応じて変更される場合)、KO はそれをより簡単かつ保守的に実装するのに役立ちます。
数字にギャップを残した場合、おそらく効率的に行うことができます。たとえば、最初の要素を 10、2 番目の要素を 20、3 番目の要素を 30 などとします。次に、何かを 2 番目の要素の前と後にドラッグすると、最初に、それを15(または何か)と呼びます。
毎回数字をインクリメントするのではなく、スペースがなくなった場合にのみ行う必要があります。最後に、オブジェクトを最小番号で並べ替えることができます。