2009-11-13 12 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

に挨拶、この間違った部分は何ですか? –

+0

今朝は十分なコーヒーを飲みませんでした。 :-) みんなありがとう。そのような愚かな事は間違いを持っ​​ている。 – ritsuke

答えて

25

試してください。代わりに$(a)$(img)の各機能の使用$(this)インサイド

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

。あなたのコードの構造を使用して

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

あなたの要素をループにeach方法を使用しているので、あなたは現在、反復要素を参照するために、コールバック関数内thisキーワードを使用する必要があります

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

は私が理解してかどうか分からない

関連する問題