2014-01-14 2 views
0

Я столкнулся с следующей проблемой.правильно использовать javascript для переключения параметров querystring

Мне нужно сделать меню (например, меню фильтрации 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')); 
}); 

Когда я нажимаю на «дату» все в порядке, URL-адрес меняется в порядке, но когда я нажимаю на «звание» URL-адрес становится первым Ord + второй Ord

Я хочу сделать так:

Я хочу, что, если мой URL является url.php становится url.php параметр, но если я в URL?. php? и я нажимаю еще один тег li, url становится url.php? вторым параметром, поэтому первый разрезается, а второй - успешно справился.

Как я могу это сделать?

Спасибо большое,

Alex

+6

Слишком много JQuery! Просто используйте 'window.location = 'blah'' ... – BenM

+1

@BenM Nooo .... вы можете использовать jQuery для [все] (http://i.stack.imgur.com/ssRUr.gif)! ;) – some

+0

@ someome Я чувствую, что некоторые редактируемые страницы там ...: 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'); 

предыдущий ог будет удален из 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-адреса.

Смежные вопросы