jQuery每个迭代问题

时间:2010-11-20 19:13:10

标签: jquery jquery-traversing

<section class="photos">
    <table>
        <tr>
            <td><a href="/a"><img src="b.jpg" /></a></td>
            <td><a href="/a"><img src="b.jpg" /></a></td>
            <td><a href="/a"><img src="b.jpg" /></a></td>
        </tr>
        <tr>
            <td><a href="/a"><img src="b.jpg" /></a></td>
            <td><a href="/a"><img src="b.jpg" /></a></td>
        </tr>
    </table>
</section>

然后我试图遍历每个以返回链接href和图像src。

$(".photos td").each(function (index, value) {
    console.log(value.a.attr('href'));
    console.log(value.img.attr('src'));
});

上述伪破坏代码不幸不起作用。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

您无法在value上运行jQuery方法,因为它只是一个DOM节点。首先创建一个jQuery对象(我更喜欢thisvalue参数,但在这种情况下它们是相同的):

$('.photos td').each(function(){
    console.log( $(this).find('a').attr('href') );
    console.log( $(this).find('img').attr('src') );
});

答案 1 :(得分:1)

亚当已经给出了答案,但是因为我正在输入它...尝试这个:(唯一的区别在于遍历部分,因为当我使用“值”时,Adam使用“this”(它们是相同的)。

$(".photos td").each(function (index, value) {
    console.log($('a', value).attr('href'));
    console.log($('img', value).attr('src'));
});

不要忘记该值表示dom元素(而不是jQuery元素),而attr()是一个仅适用于jQuery对象的jQuery方法。 另外,你不应该关闭你的标签吗?

答案 2 :(得分:1)

试试这个:

$(".photos td").each(function (index, value) {
    console.log($(this).find('a').attr('href'));
    console.log($(this).find('img').attr('src'));
});