2010-05-10 23 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