Вопрос

<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'));
});

К сожалению, приведенный выше псевдо-сломанный код не работает.Есть идеи?

Это было полезно?

Решение

Вы не можете запускать методы jQuery на value, поскольку это всего лишь узел DOM.Сначала создайте из него объект jQuery (я предпочитаю this к value аргумент, но в данном случае они одинаковые):

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

Другие советы

Адам уже дал ответ, но поскольку я его печатал...попробуй это:(единственная разница заключается в части обхода, поскольку Адам использует «это», а я использую «значение» (которые одинаковы).

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

Не забывайте, что value представляет собой элемент dom (а не элемент jQuery), а attr() — это метод jQuery, который работает только для объектов jQuery.Кроме того, разве вам не следует закрывать теги?

Попробуй это:

$(".photos td").each(function (index, value) {
    console.log($(this).find('a').attr('href'));
    console.log($(this).find('img').attr('src'));
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top