2014-01-14 29 views
0

我遇到以下問題。正確使用javascript切換查詢字符串參數

我必須爲我的網站製作一個菜單(如booking.com左邊的過濾菜單),我使用的是javascript來做到這一點。

我遇到的問題是,在下面的代碼行

<ol class="select"> 
    <li data-value="date">Data</li> 
    <li data-value="rank">Popolarit&agrave;</li> 
</ol> 

var nav = $('#nav'); 
var selection = $('.select'); 
var select = selection.find('li'); 

select.click(function(event) { 
    $(window.location).attr('href', document.location.href+"?ord=" + $(this).attr('data-value')); 
}); 

,當我在「日期」點擊一切正常,該網址變更罰款,但是當我點擊「等級」該網址將成爲第一ORD +第二ORD

我想做的事情是這樣的:

我想,如果我的網址是url.php成爲url.php參數,但如果我到網址? php?參數,我點擊另一個li標籤,url變成了url.php?secondparameter,所以第一個被剪切,第二個是repl一桿進洞。

我該怎麼做?

非常感謝,

亞歷

+6

太多的jQuery!只要使用'window.location ='blah'' ... – BenM

+1

@BenM Nooo ....你可以使用jQuery [everything](http://i.stack.imgur.com/ssRUr.gif)! ;) – some

+0

@some我聞到一些頁面編輯有...:P – Scimonster

回答

0

您正試圖改變的查詢字符串,爲什麼不覆蓋查詢字符串,像這樣:

window.location.search = "?ord=" + $(this).attr('data-value'); 
0

的問題是,你的document.location.href已經從先前的選擇包含數據。在添加新參數之前,您必須刪除舊參數。的

而是採用

document.location.href 

你應該使用

var old_url = document.location.href; 
var url = old_url.substring(0, old_url.indexOf('?')); 

如果你再這樣做:

window.location = url +"?ord=" + $(this).attr('data-value'); 

以前ORD會從URL中剝離添加新ORD前。

+0

真的沒有任何需要使用jQuery在這裏重定向... – BenM

+0

@BenM我只是使用OP提供的代碼...但你是對的,編輯。不知道你可以忽略第一個url部分,就像在你的回答中那樣......整天學習:D –

0

當然,以下將適合你嗎?

select.click(function(event) { 
    window.location = '?ord='+$(this).data('value'); 
}); 

它可能只是爲了更好地修改window.location.search雖然:

select.click(function(event) { 
    window.location.search = '?ord='+$(this).data('value'); 
}); 
0

你可以只修改document.location.search;只包含URL的查詢部分。