Wie aktualisiere ich eine href in jquery?


79

Ich habe eine Liste von Links, die alle zu einer Google Maps-API führen.

Die Links enthalten bereits den daddrParameter (Ziel) als statisch. Ich verwende Geo-Location, um die Position des Benutzers zu ermitteln, und möchte die saddr(Quelladresse) zu den Links hinzufügen, sobald ich die Daten erhalten habe.

Im Grunde muss ich so etwas wie &saddr=50.1234567,-50.03452am Ende aller Links hinzufügen, die auf Google Maps verweisen

Alle Links haben eine Klasse namens directions-link

und von dieser Seite habe ich herausgefunden, wie man sie ändert:

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

Ich möchte meinen Wert jedoch nur an das Ende der href anhängen, ohne zu ändern, was die href bereits ist.

Wie kann ich das machen?

Antworten:


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

Zum Schleifen mit each()

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

Vielen Dank, wird dies funktionieren, wenn es mehr als 1 Wegbeschreibung gibt, alle mit unterschiedlichen hrefs? Vielen Dank!
JD Isaacks

Wenn Sie für jede Instanz von a.directions-linkdann dasselbe anhängen, ja. Wenn Sie andernfalls an jeden href einen anderen Wert each()anhängen , müssen Sie einen verwenden , um den jeweiligen Wert zu iterieren und anzuhängen.
Gabe

Ich füge den gleichen Wert hinzu, aber jeder href ist zunächst anders. Wenn also die erste one.html und die zweite two.html ist, sind beide one.html & saddr ... weil nur die href des ersten a.directions-Links erfasst und für alle verwendet wird. Also denke ich, ich muss jedes () verwenden. Möchtest du darüber nachdenken? Vielen Dank!!
JD Isaacks

Ja, die Schleife ist das, was ich brauchte. Danke! :)
JD Isaacks

41

jQuery 1.4 verfügt über eine neue Funktion, die dies regelt. Ich habe vergessen, wie es heißt, aber Sie verwenden es so:

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

Das durchläuft auch alle Elemente, sodass $ .each nicht erforderlich ist


4
Das hat bei mir nicht funktioniert, aber .attr('href', function(i) { return $(this).attr('href') + '?q=testing'; })funktioniert.
Elbert Alias

3
@elfbertf es funktioniert bei mir. Verwenden Sie jquery> = 1.4? Und haben Sie die Variable href als zweites Argument angegeben?
Zaius

$ ("# calculator"). attr ("href", Funktion (i, href) {return href + '? ves =' + 23 + '& v =' + 'sdfds';}); nicht funktionieren
des1roer

Wenn Sie dies unter jsfiddle.net/qz9eLr2z testen , funktioniert es. api.jquery.com/attr/#attr-attributeName-function sagt, dass dies in jQuery 1.1 hinzugefügt wurde.
Jacob C. sagt Reinstate Monica

1
@ JacobC. Das Zulassen, dass attr eine Funktion übernimmt, wurde in 1.1 hinzugefügt, aber das Übergeben des aktuellen Werts als zweiter Parameter wurde in 1.4 hinzugefügt. Hier ist ein Beispiel dafür, dass es in jquery 1.3 nicht funktioniert. Jsfiddle.net/qz9eLr2z/1
zaius


-1

Hier ist, was ich versucht habe, um Parameter in die URL einzufügen, die das spezifische Zeichen in der URL enthalten.

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

Arbeitsbeispiel Klicken Sie auf


Was ist der Zweck dieses Beitrags? Ist das eine Frage oder eine Antwort? Oder nur ein merkwürdiger Kommentar? Wenn es das spätere ist, posten Sie am falschen Ort. ;-)
Phill Healey

Ich habe das Demo-Beispiel in jsfiddle erstellt, aber der Link war falsch. Jetzt zeigt es auf die richtige URL.
Bikram Shrestha

Ihre 'Antwort' macht keinen Sinn, es ist eigentlich eher eine bizarre Aussage.
Phill Healey
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.