2010-05-10 16 views
62

Ho una lista di link che vanno tutti su una google maps api.Come aggiornare (aggiungere a) un href in jquery?

i collegamenti dispongono già del parametro daddr (destinazione) come statico. Sto usando Geo-Location per trovare la posizione degli utenti e voglio aggiungere lo saddr (indirizzo di origine) ai collegamenti una volta ricevuti i dati.

quindi fondamentalmente ho bisogno di aggiungere qualcosa come &saddr=50.1234567,-50.03452 alla fine della coda di tutti i link che puntano a Google Maps

Tutti i collegamenti sono una classe chiamata directions-link

e da this page ho capito come di cambiarle:

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

Tuttavia voglio solo aggiungere il mio valore alla fine del href senza cambiare ciò che il href già è.

Come posso farlo?

risposta

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

Per ciclo con each()

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

Grazie, sarà questo lavoro se non v'è più di 1 direzioni-link tutti con diverse HREF? Grazie! –

+0

Se si aggiunge la stessa cosa per ogni istanza di 'a.directions-link', allora si. Altrimenti, se si aggiunge un valore diverso a ogni href, sarà necessario utilizzare un 'each()' per iterare e aggiungere il rispettivo valore. – Gabe

+0

Sto aggiungendo lo stesso valore, ma ogni href è diverso all'inizio. quindi se il primo è uno.html e il secondo è due.html entrambi finiscono per essere uno.html e saddr ... perché cattura solo l'href del primo link a.directions e lo usa per tutti. Quindi penso di aver bisogno di usare each(). Ti interessa eleborare l'uso di quello? Grazie!! –

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

Questo è sbagliato. Applica l'href dal primo ".directions-link" corrispondente a tutti i link di quella classe. https://jsfiddle.net/yuezewaw/ –

32

jQuery 1.4 ha una nuova funzionalità per fare questo, e regole. Ho dimenticato come si chiama, ma lo si utilizza in questo modo:

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

che si ripete su tutti gli elementi troppo, quindi senza bisogno di $ .each

+3

Questo non ha funzionato per me, ma '.attr ('href', function (i) {return $ (this) .attr ('href') + '? q = testing ';}) 'fatto. –

+1

@elfbertf funziona per me. Stai usando jquery> = 1.4? E hai incluso la variabile href come secondo argomento? – zaius

+0

Funziona alla grande! Anche il codice bello e pulito. –

0

Ecco quello che ho cercato di fare per aggiungere parametro nell'URL che contiene il carattere specifico nell'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; 
     // 

Esempio di lavoro Click

+0

Qual è lo scopo di questo post? Questa è una domanda o una risposta? O solo un commento strano? Se è il più tardi, stai postando nel posto sbagliato. ;-) –

+0

Ho creato il campione demo in jsfiddle, ma il collegamento era sbagliato. Ora punta all'URL giusto. –

+0

La tua "risposta" non ha senso, in realtà è più di una bizzarra affermazione. –

Problemi correlati