用户以他想要的方式对列表对象进行排序,然后单击“保存”链接并将订单保存到数据库中(在 url 的帮助下)。在用户更改顺序之前,url 如下所示:index.php?type=list&action=saveNewListOrder&listId=24。
当用户更改列表对象的顺序时,下面的函数将运行,并创建与 url 合并的列表对象字符串。
一切正常,除了用户第二次移动列表对象时,检索到的 url 已经包含带有列表对象的字符串(自上次移动以来)。每次用户移动列表对象时,url 都会增长。
在第三步之后,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);
}
});