使用jQuery更改href值

如何使用jQuery重写href值?

我有默认城市的链接

parks malls 

如果用户在#city文本框中输入值,我想用用户输入的值替换Paris。

到目前为止我有

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

鉴于你有独特的href值( ?what=parks ,以及?what=malls ),我建议你不要$.attr()方法中写一个路径; 你必须为每个独特的href调用$.attr() ,这将非常快速地变得非常冗余 – 更不用说难以管理了。

下面我打电话给$.attr()并使用一个函数只用新城市替换&city=部分。 这种方法的好处是这5行代码可以更新数百个链接,而不会破坏每个链接上的其余href值。

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

您可能需要注意的一件事是空间和套管。 您可以使用.toLowerCase() JavaScript方法将所有内容转换为小写,并且可以使用.replace()另一个调用替换空格,如下所示:

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

在线演示: http : //jsbin.com/ohejez/

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

只要在#city输入字段中释放了一个键,就会更新href

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

像这样:

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

编辑:添加了搜索字符串