2009-11-13 12 views
7

Hola chicos: estoy tratando de agregar un trozo de URL adicional a un atributo existente y simplemente actualizarlo.JQuery: agregando valor de atributo a cada elemento

$("img").each(function (i) { 
    var originalSrc = $("img").attr('src'); 
    $("img").attr('src', 'http://www.domain-name.com/' + originalSrc);  
}); 

$("a").each(function (i) { 
    var originalHref = $("a").attr('href'); 
    $("a").attr('href', 'http://www.domain-name.com/' + originalHref);  
}); 

Está contando todos los elementos y anexando una cuerda larga al atributo final. Entiendo lo que está pasando, pero no estoy seguro de la forma correcta de hacerlo. Esto es obviamente incorrecto.

Básicamente, estoy restregando una página remota y necesito restablecer todas las conexiones relativas a absoluta.

Gracias! :-)

+0

No estoy seguro de que entiendo, ¿cuál es la parte equivocada de esto? –

+0

No tomé suficiente café esta mañana, ¡eso es qué! :-) Gracias chicos. Qué tontería cometer un error. – ritsuke

Respuesta

25

Probar:

$("img").each(function() { 
    var originalSrc = $(this).attr('src'); 
    $(this).attr('src', 'http://www.domain-name.com/' + originalSrc);  
}); 
0

Dentro de cada función de uso $(this) en lugar de $(a) y $(img).

1

Puesto que usted está utilizando el método each para recorrer sus elementos, se debe utilizar la palabra clave this dentro de la función de devolución de llamada, para referirse al elemento actualmente iterada:

$("img").each(function (i) { 
    var image = $(this), // 'this' is the image element being iterated 
     originalSrc = image.attr('src'); 

    image.attr('src', 'http://www.domain-name.com/' + originalSrc);  
}); 
0

Usando la estructura de su código:

$("img").each(function (i) { 
    var $img = $(this); 
    var originalSrc = $img.attr('src'); // use "this" in the $() function to get the current element... 
    $img.attr('src', 'http://www.domain-name.com/' + originalSrc);  
}); 

$("a").each(function (i) { 
    var $a = $(this); 
    var originalHref = $a.attr('href'); 
    $a.attr('href', 'http://www.domain-name.com/' + originalHref);  
});

Asegúrese de utilizar $(this) dentro de las funciones de devolución de llamada de jQuery para recuperar el nodo 'actual' en la lista de nodos.

8

Incluso menos trabajo con (comparar http://api.jquery.com/attr/):

$("img").attr('src', function(i, val){ 
    return 'http://www.domain.com/' + val; 
}); 

$("a").attr('href', function(i, val){ 
    return 'http://www.domain.com/' + val; 
}); 

Saluda

Cuestiones relacionadas