2009-10-20 75 views
0

我有這樣的結構jQuery的每個()幫助

<p class="descr"> 
    <span>something here</span> 
    <img src="test" /> 
</p> 

<p class="descr"> 
    <span>somthing else here</span> 
    <img src="test2" /> 
    <img src="test3" /> 
</p> 

所以可以有<p>元件的內多於一個圖像。

我需要做的是循環每個<p>,然後每個<img>裏面,並添加一些東西在它的前面。任何幫助表示讚賞。我試着做.each()但它不工作。

+1

你爲什麼不張貼你試過的代碼? – 2009-10-20 13:41:49

+0

請發佈您現有的代碼。如果他們能*看到*你做錯了什麼,人們可以更好地幫助你。提示:您可以直接編輯問題。 – Tomalak 2009-10-20 13:43:39

回答

3

試試這個:

$('p.descr > img').each(function() { 
    // Make this code do what you want. 
    $(this).prepend('<span>Prepended Content</span>'); 
}); 

變量this表示此函數內的當前圖像。在這個例子中,我在段落內的每個圖像之前注入了一個span元素,但只注入了後代圖像。

此功能可以縮短,如果你只打算每個圖像之前添加其他元素:

$('p.descr > img').prepend('<span>Prepended Content</span>'); 
0
$('p img').each(
    function(k, v) 
    { 
    $($(v).parents()[0] + 'span').html('Your text here'); 
    } 
); 

Manual

2
$('p').each(function() 
{ 
    $(this).find('img').each(function() 
    { 
     // do stuff with the image 
    }); 
}); 
+0

最好將'each'語句組合起來以防止不必要的DOM遍歷。 – 2009-10-20 13:48:43

0

像這樣的東西應該做的伎倆:

$('p.descr img').before('<span>New Stuff</span>'); 
1
$('p.desc img').before('<span>here comes an image</span>'); 
0
p = $('#p img'); 
p.each(function(i, val) { 
    $(val.id).append("<strong>Hello</strong>"); 
});