2011-07-09 20 views
1

".vm-video-title" -divsのすべてのリンクを読み込み、同じdivにそれぞれ投稿します。だから私は、このスクリプトを作っ:jquery .each()loop

$('.vm-video-title').each(function(i) {//all divs 
    $(this).html($(this).html()+$("div.vm-video-title>a").text());//add to div the link 
    }); 

を私はそれがすべてのdivのすべてのリンクを読み取り、1つのdivの中にそれらを置く問題を抱えています。

例:

<div class="vm-video-title"><a href="...">Text1</a></div> 
<div class="vm-video-title"><a href="...">Text2</a></div> 
<div class="vm-video-title"><a href="...">Text3</a></div> 

出力:

<a href="...">Text1</a>Text1Text2Text3 
<a href="...">Text2</a>Text1Text2Text3 
<a href="...">Text3</a>Text1Text2Text3 

たかっ出力:これはあなたのための仕事をする必要があります

<a href="...">Text1</a>Text1 
<a href="...">Text2</a>Text2 
<a href="...">Text3</a>Text3 

答えて

4

あなたはdiv要素を見つける必要があります内部の現在の要素p(el)。あなたは、ほとんどがあった

あなたはすべてのマッチングのテキストを()追加されているあなたのコード内
$('.vm-video-title').each(function(i, el) { 
    el = $(el); 
    el.html(el.html()+el.find("a").text()); 
}); 

あなたのdivの中に「」タグ(すなわちText1Text2Text3)

+0

感謝。うまく動作します。 – JonasT

2

。代わりに$("div.vm-video-title").text()のいずれかの文字をdivに入力してvm-video-titleと入力すると、現在divの中にaというタグがあり、そこからテキストを取得する必要があります。私たちは、あなたが直接<a>要素を選択し、それぞれの後に、それぞれのコンテンツを追加するafter()[docs]メソッドを使用することができますajQuery(selector, [context])現在div内部

$('.vm-video-title').each(function(i) {//all divs 
    $(this).html($(this).html()+$("a", this).text()); 
}); 
+0

"this"を使用することは、常にjsでは混乱します。可能な限り、名前付き変数を使用することをお勧めします。この場合、関数(i、el) –

+0

@ patrickのメソッド( 'after')は、DOM要素を再作成しないので、より優れています。ありがとう。 – TheVillageIdiot

5

を選択するためのcontextとしてthisを渡します。

$("div.vm-video-title > a").after(function() { return $(this).text(); }); 

これは意志html()[docs]法のような既存の要素の「を再現し、その後破壊」を行いません。

の作業例:http://jsfiddle.net/CCr9C/

+0

ありがとう。うまく動作します。 – JonasT

+0

@Jonas T .:ようこそ。 – user113716

+0

@patrick dwこれは素晴らしいです! – TheVillageIdiot