检索href属性

时间:2012-10-23 19:32:07

标签: jquery url hyperlink concatenation href

用户按照他想要的方式对列表对象进行排序,然后单击“保存”链接并将订单保存到数据库中(在URL的帮助下)。在用户更改订单之前,网址如下所示: index.php?type = list& action = saveNewListOrder& listId = 24

当用户更改列表对象的顺序时,下面的函数运行,并创建与该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

我曾想过使用substring(提取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);
        }
    });

2 个答案:

答案 0 :(得分:3)

为什么不将列表顺序保存在变量中,直到用户实际点击保存为止。然后将其附加到网址。

答案 1 :(得分:0)

您可以在设置#newOrder

的href属性之前丢弃listOrder参数并附加新订单
var url = $('#newOrder').attr("href");
var arrurl = url.split('&listOrder=');
url = arrurl[0];
url += "&listOrder=" + order;
$('#newOrder').attr('href',url);