2009-11-13 74 views
7

嘿傢伙 - 我試圖追加一個額外的URL塊到一個現有的屬性,並簡單地更新它。JQuery:將屬性值附加到每個元素

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

它計算所有元素並將一個長字符串附加到最終屬性。我明白髮生了什麼,但我不確定正確的方式去做這件事。這顯然是錯誤的。

本質上,我正在擦除遠程頁面,我需要將所有相對連接重置爲絕對。

謝謝! :-)

+0

我不能肯定我明白了,什麼是這個錯誤的一部分嗎? – 2009-11-13 18:59:09

+0

今天早上我沒喝足夠的咖啡,就是這樣! :-) 多謝你們。這樣一個愚蠢的事情有一個錯誤。 – ritsuke 2009-11-13 19:04:15

回答

25

嘗試:

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

每個函數內部使用$(this)代替$(a)$(img)

1

由於您使用的是each方法循環在你的內容,你應該使用this關鍵字的回調函數內,來指代當前迭代元素:

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

使用您的代碼結構:

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

確保在jQuery的回調函數中使用$(this)來檢索節點列表中的'當前'節點。

8

用甚至更少的工作(比較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; 
}); 

電賀