2010-05-10 16 views
62

Tengo una lista de enlaces que van a una API de Google Maps.¿Cómo actualizar (agregar a) un href en jquery?

los enlaces ya tienen el parámetro daddr (destino) en ellos como estáticos. Estoy usando Geo-Location para encontrar la posición de los usuarios y quiero agregar saddr (dirección de origen) a los enlaces una vez que obtengo los datos.

así que básicamente tendrá que añadir algo así como &saddr=50.1234567,-50.03452 al final de la cola de todos los enlaces que apuntan a Google Maps

Todos los enlaces tienen una clase llamada directions-link

y desde this page he descubierto la manera cambiarlos:

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

sin embargo sólo quiero añadir mi valor al final del href sin cambiar lo que el href ya está.

¿Cómo puedo hacer eso?

Respuesta

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

Para bucle 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

Gracias, es que esto funciona si hay más de 1 direcciones de enlace de todos con diferentes hrefs? ¡Gracias! –

+0

Si agrega lo mismo para cada instancia de 'a.directions-link', entonces sí. De lo contrario, si agrega un valor diferente a cada href, tendrá que usar un 'each()' para iterar y anexar el valor respectivo. – Gabe

+0

Agrego el mismo valor, pero cada href es diferente para empezar. entonces si el primero es one.html y el segundo es two.html ambos terminan siendo one.html y saddr ... porque captura solo el href del primer enlace a.directions y usa eso para todos. Entonces creo que necesito usar cada uno(). ¿Te importa eleborar sobre el uso de eso? ¡¡Gracias!! –

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

Esto está mal. Aplica el href desde el primer "enlace de direcciones" coincidente a todos los enlaces de esa clase. https://jsfiddle.net/yuezewaw/ –

32

jQuery 1.4 tiene una nueva característica para hacer esto, y reglas. Me he olvidado cómo se llama, pero lo uso como esto:

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

que los bucles sobre todos los elementos también, así que no hay necesidad de $ .Cada

+3

Eso no funcionó para mí, pero '.attr ('href', función (i) {return $ (this) .attr ('href') + '? q = testing ';}) 'lo hizo. –

+1

@elfbertf funciona para mí. ¿Estás usando jquery> = 1.4? ¿Y incluyó la variable href como segundo argumento? – zaius

+0

¡Funciona muy bien! Código agradable y limpio también. –

0

Esto es lo que he intentado hacer para agregar parámetro en la url que contiene el carácter específico en la 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; 
     // 

Ejemplo de trabajo Click

+0

¿Cuál es el propósito de esta publicación? ¿Es esta una pregunta o una respuesta? ¿O solo un comentario extraño? Si es el último, estás publicando en el lugar equivocado. ;-) –

+0

He creado la muestra de demostración en jsfiddle, pero el enlace era incorrecto. Ahora apunta a la url derecha. –

+0

Su 'respuesta' no tiene sentido, en realidad es más una afirmación extraña. –

Cuestiones relacionadas