2009-11-13 16 views
7

Hej faceci - Próbuję dodać dodatkowy fragment adresu URL do istniejącego atrybutu i po prostu go zaktualizować.JQuery: Dołączanie wartości atrybutu do każdego elementu

$("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);  
}); 

Zlicza wszystkie elementy i dodaje długi ciąg do ostatecznego atrybutu. Rozumiem, co się dzieje, ale nie jestem pewien, jak to zrobić. Jest to oczywiście błędne.

Zasadniczo szoruję stronę zdalną i muszę zresetować wszystkie relatywne połączenia do wartości bezwzględnych.

Dzięki! :-)

+0

Nie jestem pewien, rozumiem, co jest złego częścią tego? –

+0

Tego ranka nie wypiłem wystarczająco dużo kawy, to właśnie! :-) Dzięki chłopaki. Taki głupi pomysł, żeby się pomylił. – ritsuke

Odpowiedz

25

Spróbuj:

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

Wewnątrz każdej funkcji użyć $(this) zamiast $(a) i $(img).

1

Ponieważ używasz metody each do pętli nad elementami, należy użyć słowa kluczowego this wewnątrz funkcji zwrotnej, aby zapoznać się z aktualnie powtórzyć element:

$("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

Korzystanie strukturę kodu:

$("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);  
});

Należy użyć $(this) wewnątrz funkcji zwrotnych jQuery, aby pobrać "bieżący" węzeł na liście węzłów.

8

Nawet mniej pracy z (por 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; 
}); 

Greets

Powiązane problemy