如何使用jQuery重寫href值?使用jQuery更改href值
我有一個默認的城市
<a href="/search/?what=parks&city=Paris">parks</a>
<a href="/search/?what=malls&city=Paris">malls</a>
鏈接如果用戶輸入的值劃分爲#city文本框我想與用戶輸入的值來代替巴黎。
到目前爲止,我有
var newCity = $("#city").val();
如何使用jQuery重寫href值?使用jQuery更改href值
我有一個默認的城市
<a href="/search/?what=parks&city=Paris">parks</a>
<a href="/search/?what=malls&city=Paris">malls</a>
鏈接如果用戶輸入的值劃分爲#city文本框我想與用戶輸入的值來代替巴黎。
到目前爲止,我有
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=)[a-z]+/ig, '$1'+o.target.value);
});
});
你可能要注意的一件事是空間和套管。你可以使用.toLowerCase()
JavaScript方法都轉換爲小寫,並且我已經向下跌破可以與另一個調用.replace()
更換空間:
'$1'+o.target.value.replace(/\s+/, '');
像這樣:
var newCity = $("#city").val();
$('a').attr('href', '/search/?what=parks&city=' + newCity);
編輯:增加的搜索字符串
這將取代整個URL,而不僅僅是'city'參數的值。 –
謝謝,我很確定OP會想出來。 – Phil
$('a').attr("href", "/search/?what=parks&city=" + newCity);
我建議這樣做與表單,因爲你現在做的方式現在使你的搜索功能無法使用JavaScript。 – Kokos