2011-07-09 85 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的所有環節的問題,並把它們放在一個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 類內的文本,你需要找到當前div內的a標籤,並從中獲取文本。我們通過thiscontext選擇a當前divjQuery(selector, [context])

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

使用「this」在js中總是令人困惑,只要有可能,建議使用命名變量。功能(我,埃爾)在這種情況下。 –

+0

@帕特里克的方法(​​'之後')更好,因爲它不會重新創建DOM元素。 – TheVillageIdiot