jQuery UI の「並べ替え可能な」インタラクションを使用する「ポートレット」スタイルのダッシュボードがあり、ページの読み込み時にローカルに保存された状態を読み返したいと考えています。そのため、ページ上でポートレットを移動するときに、ページを離れて戻ってきたときに、ポートレットが同じ場所にあるようにしたいと考えています。状態の変更をサーバーにプッシュするのではなく、このクライアント側 (「ローカル設定」) を実行する必要があります。
ここでこの質問を見ました: jQuery UI Sortable and Cookie
そして、いくつかの良い指針がありましたが、もっと基本的なものが欠けているのではないかと思わずにはいられません...数年経ちましたが、もっと良いツールが含まれているかもしれません.
私はこの更新機能でどこかに行きました:
update : function(e,ui) {
// where "shortname" is a unique string identified elsewhere on the page
localConfig.layout[shortname] = [];
var containers = $('.widgetContainer');
containers.each(function(){
localConfig.layout[shortname].push($(this).sortable("toArray"));
});
}
これにより、次のように配列の配列が生成されます。
[["someWidget", "anotherWidget"],["widgetInOtherColumn", "anotherWidgetInOtherColumn"]]
コードで退屈させるつもりはありませんが、これを localStorage (または、利用できない場合は Cookie) に設定できることは確かです。そのため、保存すると上記のコードに追加されます。
本当の質問は単にこれです:
jQuery UI API を使用して、配列の配列を読み取るための単純なメカニズムまたは組み込みのメカニズムはありますか? それとも、「手で」行って、配列を取得し、それらを繰り返し処理して DOM ノードを移動する必要がありますか? つまり、上記のコードはそのままにしておく必要さえありません。jQuery UI の「タブ」ウィジェットには、渡すことができる引数しかありcookie: {args}
ません (... API にない理由はわかりませんが、機能します!); sortable には、jQUI に含まれているかプラグインとして似たようなものがありますか?
新しいメソッドを作成することによってのみ可能である場合、ノードをシャッフルする最も効率的な方法は何ですか? 自分のデバイスに任せて、すべてのノードを取得し、ストレージ コンテナーに移動してから、イテレーターを介して必要な場所に戻します。要素の順序を切り替えるには、それよりも簡単な方法があるに違いないと私には思えます。
ありがとう!