2011-03-24 96 views
3

这看起来像我已经倒下了兔子洞,我想有一个更简单的整体策略,但我在这里。javascript(试图复制windows.location没有成功)

我想允许用户在已经过滤这些结果之后对给定的一组结果进行排序。我想保留原来的过滤器,同时添加一个新的(排序)。我想避免必须使用原始过滤器创建隐藏输入,然后通过排序链接上的单击事件处理程序提交表单。

我试图做的是读取window.location并使用我的新排序参数concatanate GET参数。它的工作,除了它与每个点击点击保持concavanating。我只希望每次点击都添加一个排序变量。我尝试了一个正则表达式解决方案,它不工作。它不断更改windows.location变量并重定向页面。

我是js的新手,我不知道如何对字符串进行深度拷贝......或者等价的。我该如何解决这个问题?我也新JS正则表达式,所以原谅我的幼稚

$('div#sort ul a').each(function(){ 
    var currentPath=window.location; 
    currentPath=currentPath.replace(/sort=\w+$/,'sort='+$(this).attr('data-sort')); 
    $(this).attr('href',currentPath) 

回答

3

window.location不是一个字符串,它是一个“URL对象”。你可以强制它像这样的字符串:

var currentPath = window.location +'';

+3

或'window.location.toString()' – cdmckay 2011-03-24 19:41:33

+0

完美。修复它,谢谢!一般来说,我上面描述的整体方法看起来是否合理高效?我是新来的 – Ben 2011-03-24 19:42:16

+0

@Brendan:没关系。在成为问题之前不要担心效率 – Cameron 2011-03-24 20:01:06