使用jQuery更改href值

时间:2011-06-30 19:31:24

标签: javascript jquery

如何使用jQuery重写href值?

我有默认城市的链接

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

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

到目前为止我已经

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

4 个答案:

答案 0 :(得分:30)

鉴于您有唯一的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/

答案 1 :(得分:15)

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

答案 2 :(得分:5)

只要在#city输入字段中发布密钥,href就会更新。

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

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

});

答案 3 :(得分:2)

像这样:

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

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

编辑:添加了搜索字符串