2011-03-24 32 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