2010-05-10 53 views
62

我有一個鏈接列表,所有鏈接都轉到google maps api。如何更新(附加到)jQuery中的href?

鏈接已將daddr(目標)參數設置爲靜態。我正在使用地理位置來查找用戶的位置,並且我希望在獲取數據後將saddr(源地址)添加到鏈接。

所以基本上我需要在所有環節的末尾添加類似&saddr=50.1234567,-50.03452指向谷歌地圖

所有環節都一類叫directions-link

this page我已經找到了如何以改變它們:

$("a.directions-link").attr("href", "http://www.google.com/"); 

但是,我只想將我的值追加到href的末尾而不改變href已經是什麼。

我該怎麼做?

回答

117
var _href = $("a.directions-link").attr("href"); 
$("a.directions-link").attr("href", _href + '&saddr=50.1234567,-50.03452'); 

要循環使用each()

$("a.directions-link").each(function() { 
    var $this = $(this);  
    var _href = $this.attr("href"); 
    $this.attr("href", _href + '&saddr=50.1234567,-50.03452'); 
}); 
+0

謝謝你,會如果有超過1個方向鏈接所有不同的HREF這項工作?謝謝! – 2010-05-10 19:23:21

+0

如果你爲'a.directions-link'的每個實例附加同樣的東西,那麼是的。否則,如果您爲每個href附加不同的值,則需要使用'each()'來迭代並追加相應的值。 – Gabe 2010-05-10 19:32:37

+0

我追加了相同的值,但每個href與開頭都不相同。所以如果第一個是one.html,第二個是two.html,那麼它們最終都會成爲one.html&saddr ...因爲它只捕獲第一個a.directions鏈接的href並將其用於所有。所以我認爲我需要使用each()。你是否在意使用它呢?謝謝!! – 2010-05-10 19:43:21

3
$("a.directions-link").attr("href", $("a.directions-link").attr("href")+"...your additions..."); 
+0

這是錯誤的。它將第一個匹配的「.directions-link」中的href應用於該類的所有鏈接。 https://jsfiddle.net/yuezewaw/ – 2017-09-21 21:48:07

32

的jQuery 1.4有這樣一個新功能,它的規則。我已經忘記了它叫什麼,但是你用這樣的:

$("a.directions-link").attr("href", function(i, href) { 
    return href + '?q=testing'; 
}); 

那遍歷過所有的元素,所以不需要$。每個

+3

這對我不起作用,但'.attr('href',function(i){return $(this).attr('href')+'?q = testing ';})'做到了。 – 2011-03-24 03:12:40

+1

@elfbertf它適合我。你使用jquery> = 1.4嗎?你是否將href變量作爲第二個參數加入? – zaius 2011-04-07 03:01:16

+0

很棒!也很乾淨的代碼。 – 2016-02-16 14:47:03

0

這是我試圖做補充url中包含特定字符的參數。

jQuery('a[href*="google.com"]').attr('href', function(i,href) { 
     //jquery date addition 
     var requiredDate = new Date(); 
     var numberOfDaysToAdd = 60; 
     requiredDate.setDate(requiredDate.getDate() + numberOfDaysToAdd); 
     //var convertedDate = requiredDate.format('d-M-Y'); 
     //var newDate = datepicker.formatDate('yy/mm/dd', requiredDate); 
     //console.log(requiredDate); 

     var month = requiredDate.getMonth()+1; 
     var day  = requiredDate.getDate(); 

     var output = requiredDate.getFullYear() + '/' + ((''+month).length<2 ? '0' : '') + month + '/' + ((''+day).length<2 ? '0' : '') + day; 
     // 

工作實例Click

+0

這篇文章的目的是什麼?這是一個問題還是答案?或者只是一個奇怪的評論?如果是後者,則發佈在錯誤的地方。 ;-) – 2016-02-16 14:48:30

+0

我已經在jsfiddle中創建了演示示例,但鏈接錯誤。現在它指向正確的網址。 – 2016-02-17 04:14:29

+0

你的「答案」沒有任何意義,實際上更多的是一種奇怪的陳述。 – 2016-02-18 11:31:26