Pregunta

<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>

Y entonces yo estoy tratando de iterar a través de cada uno de devolver el href del enlace y el src de la imagen.

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

El pseudo-roto-código anterior no lamentablemente trabajo. Algunas ideas?

¿Fue útil?

Solución

No se puede ejecutar métodos de jQuery en value, ya que es sólo un nodo DOM. Crear un objeto jQuery fuera de él primero (prefiero this al argumento value, pero son lo mismo en este caso):

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

Otros consejos

Adam ya se dio la respuesta, pero como yo estaba escribiendo ... que intente esto: (la única diferencia está en la parte de recorrido, desde Adán utiliza "este", mientras que yo uso "valor" (que son los mismos).

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

No se olvide que el valor representa un elemento DOM (y no un elemento de jQuery), y attr () es un método de jQuery que sólo funciona para objetos jQuery. Además, no debe estar cerrando sus etiquetas?

Prueba esto:

$(".photos td").each(function (index, value) {
    console.log($(this).find('a').attr('href'));
    console.log($(this).find('img').attr('src'));
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top