使用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);
编辑:添加了搜索字符串