2010-02-12 20 views
6

Estoy tratando de modificar un enlace usando jQuery. Los enlaces se generan dinámicamente y no tengo control sobre el HREF existente, ya que se llaman desde un sitio de terceros.jQuery: Agregar texto a un HREF dinámico existente

Usando jQuery, ¿cómo puedo cambiar un enlace de esta:

example.com/?one=1&two=1 

a esto:

example.com/?one=1&two=1&thisisadded=true 

tan esencialmente añadiendo &thisisadded=true hasta el final de la relación?

Los enlaces que necesitan cambios están dentro de su propio div con una clase de my-link.

Respuesta

12
$('a.my-link').each(function() { 
    var href = $(this).attr('href'); 
    $(this).attr('href', href + '&thisisadded=true'); 
}); 

Reemplazar selector con un selector de jQuery que coincide enlace correspondiente en su sitio si la mía no es lo suficientemente buena.

+0

¡Gracias por su rápida respuesta! Esto funcionó para mí y agregó correctamente el texto "& thisisadded = true". ¿Es posible quitar los parámetros ("& preview = 1 & TB_iframe = true") fuera del enlace? Estoy abriendo los enlaces en una nueva pestaña y no los quiero/necesito allí. Muchas gracias, James – James

+0

Creo que deberías aceptar esto como la respuesta correcta. ;) – catandmouse

2
var href = $(this).attr('href'); 
$(this).attr('href', href + '&thisisadded=true') 

Obviamente hacer esto en un contexto en el que this es su enlace

+1

'$ (this)' funcionará en la devolución de llamada una vez que coincida con todos los enlaces que se deben cambiar. Pero si llama a su código de esta manera no le dará los resultados que espera. – RaYell

+0

Sí, eso es lo que mencioné también, que debería estar en ese contexto, esto se puede usar en cualquier evento en ese elemento, ¿no es así? –

1

Sólo tiene que utilizar su selector, y una función de devolución de llamada para attr. Esto añadirá la parte adicional para cada enlace a juego:

$('a.my_link').attr('href', function(i, a){ return a + "&thisadded=true" }); 

Cuando el suministro de una devolución de llamada para el método attr, el primer parámetro es el index y el segundo parámetro es el valor original attribute. Lo que devuelve la devolución de llamada se convierte en el nuevo valor.

Nota: Esta función está disponible en jQuery 1.1 y posterior. No confundas este método con el nuevo lote de métodos que aceptan devoluciones de llamada introducidas en jQuery 1.4.

+0

+1 Consejo impresionante sobre los valores de los atributos! – Sampson

+0

Esto está funcionando, pero cuando haces clic en otros enlaces, sigue agregando el valor al enlace. ¿algunas ideas? – Notflip

Cuestiones relacionadas