Изменение значения href с помощью jQuery

Как переписать значение href с помощью jQuery?

У меня есть ссылки с городом по умолчанию

<a href="/search/?what=parks&city=Paris">parks</a>
<a href="/search/?what=malls&city=Paris">malls</a>

Если пользователь вводит значение в текстовое поле #city, я хочу заменить Париж введенным пользователем значением.

До сих пор у меня

var newCity = $("#city").val();

Ответ 1

Учитывая, что у вас есть уникальные значения href (?what=parks и ?what=malls), я бы предложил не писать путь в метод $.attr(); вам понадобится один вызов $.attr() для каждого уникального href, и это будет очень скудным, очень быстро - не говоря уже о трудном управлении.

Ниже я делаю один вызов $.attr() и используя функцию для замены только части &city= новым городом. Хорошая вещь об этом методе заключается в том, что эти 5 строк кода могут обновлять сотни ссылок, не разрушая остальные значения href для каждой ссылки.

$("#city").change(function(o){
  $("a.malls").attr('href', function(i,a){
    return a.replace( /(city=)[a-z]+/ig, '$1'+o.target.value );
  });
});

Одна вещь, которую вы, возможно, захотите посмотреть, это пробелы и обложка. Вы можете преобразовать все в нижний регистр с помощью метода .toLowerCase() JavaScript, и вы можете заменить пробелы на другой вызов .replace(), как я ниже:

'$1'+o.target.value.replace(/\s+/, '');

Онлайн-демонстрация: http://jsbin.com/ohejez/

Ответ 2

 $('a').attr("href", "/search/?what=parks&city=" + newCity);

Ответ 3

Как только ключ будет выпущен в поле ввода #city, будет обновлен href.

$('#city').keyup(function(){

    $('a').attr('href','/search/?what=parks&city='+$(this).val());

});

Ответ 4

Вот так:

var newCity = $("#city").val();

$('a').attr('href', '/search/?what=parks&city=' + newCity);

EDIT: Добавлена ​​строка поиска