0

ユーザーはリストオブジェクトを希望どおりに並べ替えてから、[保存]リンクをクリックすると、順序がデータベースに保存されます(URLを使用)。ユーザーが順序を変更する前のURLは、index.php?type = list&action = saveNewListOrder&listId=24のようになります。

ユーザーがリストオブジェクトの順序を変更すると、以下の関数が実行され、URLとマージされるリストオブジェクトの文字列が作成されます。

ユーザーがリストオブジェクトを2回目に移動したときに、取得されたURLにリストオブジェクトを含む文字列が既に含まれていることを除いて、すべてが正常に機能します(最後の移動以降)。ユーザーがリストオブジェクトを移動するたびに、URLが大きくなります。

3回目の移動後、URLは次のようになります。

index.php?type=list&action=saveNewListOrder&listId=170&listOrder=772.773.775.774
.776&listOrder=772.775.773.774.776&listOrder=775.773.772.774.776

私は(URLの最初の部分を抽出するために)部分文字列を使用することと、毎回取得されて変更されない非表示フィールドにURLを配置することも考えました。これらのソリューションはどちらも不必要に複雑に感じられるため、より洗練されたソリューションが必要です。

    $('#listElements').sortable({
        update: function(event, ui) {

            var order = '';
            var i = 0;
            $('.listObject li').each(function (e) {
                if (i != 0) {
                    order += '.';
                }
                order += $(this).attr('id');//.push($(this).attr('id'));
                i +=1;
            });

            var url = $('#newOrder').attr("href");

            url += "&listOrder=" + order;

            $('#newOrder').attr('href',url);
        }
    });
4

2 に答える 2

3

ユーザーが実際に保存を押すまで、リストの順序を変数に保存してみませんか。次に、それをURLに追加します。

于 2012-10-23T19:37:27.023 に答える
0

#newOrderのhref属性を設定する前に、listOrderパラメーターを破棄し、新しい注文を追加できます。

var url = $('#newOrder').attr("href");
var arrurl = url.split('&listOrder=');
url = arrurl[0];
url += "&listOrder=" + order;
$('#newOrder').attr('href',url);
于 2012-10-23T20:19:37.557 に答える