jQuery كل مشكلة التكرار
-
26-09-2019 - |
سؤال
<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'));
});
لا تنس أن القيمة تمثل عنصر 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'));
});
لا تنتمي إلى StackOverflow