プロジェクトの 1 つで同様の関数を使用しており、順序を復元する準備ができているコードがあります。この関数は 2 つのパラメーターを取ります。
- リストコンテナ
- コンマ区切りの ID を保持する Cookie。
私はそれを使用してulベースのリストを並べ替えますが、あなたの場合もうまくいくはずです...
// Function that restores the list order from a cookie
function restoreOrder( _list, _cookie ) {
var list = $( '#' + _list );
if( list == null ) return;
// fetch the cookie value (saved order)
var cookie = $.cookie( _cookie );
if( !cookie ) return;
// make array from saved order
var IDs = cookie.split( "," );
// fetch current order
var items = list.sortable( "toArray" );
// make array from current order
var rebuild = new Array();
for( var v = 0, len = items.length; v < len; v++ )
rebuild[items[v]] = items[v];
for( var i = 0, n = IDs.length; i < n; i++ ) {
// item id from saved order
var itemID = IDs[i];
if( itemID in rebuild ) {
// select item id from current order
var item = rebuild[itemID];
// select the item according to current order
var child = $( '#' + _list ).children( '#' + item );
// select the item according to the saved order
var savedOrd = $( '#' + _list ).children( '#' + itemID );
// remove all the items
child.remove();
// add the items in turn according to saved order
// we need to filter here since the "ui-sortable"
// class is applied to all ul elements and we
// only want the very first! You can modify this
// to support multiple lists - not tested!
$( '#' + _list ).filter( ':first' ).append( savedOrd );
} // if
} // for
} // restoreOrder
どこから入手したか忘れてしまいました (グーグル中に出てきたフォーラムやブログ)... しかし、元の作者の功績によるものです。これらのパラメーターを受け入れることで、元のルーチンを少し変更して再利用しやすくしました。
乾杯、微視的^地球