如何使用JQuery选择.each循环中元素的子元素?

时间:2011-07-04 02:07:57

标签: jquery html jquery-selectors

我正在尝试在我的<img>个标记中选择<a>个标记customurl

我知道我可以在一个<a>上执行此操作:

$(".customurl img");

但我正试图弄清.each中的语法是这样的:

$(".customurl").each(function(i)
{
    var t = $(this);

    // select child <img> within t
    // (for this iteration)
});

这是一个HTML代码段,需要进一步说明:

<a class="customurl"><img src="blah" /> Some text</a>
<a class="customurl"><img src="blah" /> Some text</a>
<a class="customurl"><img src="blah" /> Some text</a>

2 个答案:

答案 0 :(得分:6)

使用children()[docs]方法。

$(".customurl").each(function(i)
{
    var t = $(this).children('img');

});

或者如果您要在图像之前确保没有文本节点(包括空格):

$(".customurl").each(function(i)
{
    var t = $(this.firstChild);

});

...但是如果你只是想运行jQuery方法,他们会为你迭代:

$(".customurl > img").attr(/*...*/);

这会将attr()[docs]方法应用于结果中的每个元素。

此外,像.attr()这样的方法会接受回调作为参数。

$(".customurl > img").attr('src', function(i,src) {
     // give each <img> a calculated value for its src
    return 'some_new_value_' + i;
});

答案 1 :(得分:5)

使用.find('')

$(this).find('img')

t.find('img')

或者这也可以使用.each()的第二个参数:

$(".customurl").each(function(i, elem)
{
    $(elem).find('img')

如果您只想要第一张图片(假设您有多张图片):

$(this).find('img:first')

$(this).find('img:first-child')