jQuery cada problema iteración
-
26-09-2019 - |
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?
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'));
});