سؤال

<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'));
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top