如何在jQuery中更新(附加到)href?


79

我有一个链接列表,所有链接都转到了Google Maps API。

链接中已经有daddr(destination)参数为静态参数。我正在使用地理位置来查找用户位置,saddr一旦获取数据,我想将(源地址)添加到链接中。

所以基本上我需要&saddr=50.1234567,-50.03452在所有指向Google Maps的链接的末尾添加类似内容

所有链接都有一个名为 directions-link

这个页面上,我想出了如何更改它们:

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

但是,我只想将我的值附加到href的末尾而不更改href已经是什么。

我怎样才能做到这一点?

Answers:


149
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');
});

谢谢您,如果有多个指向不同的href的路线链接,可以进行这项工作吗?谢谢!
JD Isaacks,2010年

如果要为的每个实例附加相同的内容,则为a.directions-linkyes。否则,如果要向每个href附加不同的值,则需要使用each()来迭代并附加相应的值。
加布

我要附加相同的值,但每个href开头都不同。因此,如果第一个是one.html,第二个是two.html,则它们最终都将是one.html&saddr ...,因为它仅捕获第一个a.directions-link的href并将其全部使用。所以我想我需要使用each()。您是否愿意详细说明其用法?谢谢!!
JD Isaacks 2010年

是的,循环是我所需要的,谢谢!:)
JD Isaacks 2010年

41

jQuery 1.4具有执行此操作的新功能,并且具有规则性。我忘记了它的名字,但是您可以这样使用它:

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

那也会遍历所有元素,因此不需要$ .each


4
那对我.attr('href', function(i) { return $(this).attr('href') + '?q=testing'; })没有用,但确实有。
Elbert Alias

3
@elfbertf对我有用。您是否正在使用jquery> = 1.4?您是否将href变量作为第二个参数?
zaius 2011年

$(“#calculator”)。attr(“ href”,function(i,href){return href +'?ves ='+ 23 +'&v ='+'sdfds';}); 不起作用
des1roer

jsfiddle.net/qz9eLr2z上对此进行测试,即可正常工作。api.jquery.com/attr/#attr-attributeName-function说这是在jQuery 1.1中添加的。
雅各布·C。

1
@雅各布 在1.1中添加了允许attr接受函数的功能,但在1.4中添加了传递第二个参数的当前值。这是一个无法在jquery 1.3中运行
zaius


-1

这是我试图在网址中添加包含网址中特定字符的参数的方法。

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;
        //

工作实例请点击


1
这篇文章的目的是什么?这是一个问题还是一个答案?或者只是一个奇怪的评论?如果是较晚的日期,则您发布的位置错误。;-)
Phill Healey

我已经在jsfiddle中创建了演示示例,但是链接错误。现在它指向正确的URL。
Bikram Shrestha

您的“答案”毫无意义,实际上更像是一个奇怪的陈述。
Phill Healey
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.