لماذا لم يعمل this في هذا الكود

mohamed asfar

أنشأت كود بسيط يقوم بتحlيل بيانات من رابط json لكل أيدي لكن عند التنفيد لا يقوم الكود بطبع كل قيمة لكل أيدي ، انما يقوم بتطبيق نفس القيمة على كل العناصر

الكود التالي :

HTML

<div class='grid-posts'>
<div data-sid="v1" id="vcount">..</div>
<div data-sid="v2" id="vcount">..</div>
<div data-sid="v3" id="vcount">..</div>
<div data-sid="v4" id="vcount">..</div>
<div data-sid="v5" id="vcount">..</div>

</div> 

JS

$('.grid-posts #vcount').each(function(){
var sid= $(this).attr('data-sid');
$.getJSON("api/"+sid, function(response) {
$(this).text(response.value);
});
});
يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

مرحبا،

تكمن المشكلة في فكرة تحميل الصفحة.

لجعل شيفرة جيكوري تتنفذ بعد التأكد من تحميل الصفحة نستخدم الشيفرة التالية:

ready تضمن تحميل الصفحة بشكل كامل.

$(document).ready(function () {
    //your code here
});

لن نستطيع الوصول لعناصر لم يتم بنائها حتى يكتمل تحميل الصفحة!

قمت بعمل التعديل وهاهي الشيفرة تعمل.. (وضع ضيمة الattr كنص للعنصر نفسه)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    </script>
</head>
<body>
    <div class='grid-posts'>
        <div data-sid="v1" id="vcount">..</div>
        <div data-sid="v2" id="vcount">..</div>
        <div data-sid="v3" id="vcount">..</div>
        <div data-sid="v4" id="vcount">..</div>
        <div data-sid="v5" id="vcount">..</div>
    </div>
    <script>
        $(document).ready(function () {
            $('.grid-posts #vcount').each(function () {
                var sid = $(this).attr('data-sid');
                console.log("this");
                $(this).text(sid);
                /*$.getJSON("api/" + sid, function (response) {
                    $(this).text(response.value);
                });*/
            });
        });
    </script>
</body>
</html>

لتضمين جيكويري بنفس النسخة التي عملت عليها ..

أرجو حذف الفراغات

http : // ajax.googleapis . com/ajax/libs/jquery/1.7.1/jquery.min.js

نقوم بتضمينه في Head

شرح تضمين الملف (محرر النصوص ضمن التعليقات هنا فيه مشاكل مع عرض الروابط ضمن الشيفرة البرمجية)

السلام عليكم ورحمة الله وبركاته

اهلا بك أخي الكريم المشكلة لديك في كود الHtml

خاصية الid هي خاصية مميزة للعنصر ولذلك لا يمكنك إشراك أكثر من عنصر في نفس ال id

فعليك أن تقوم بعمل id مختلف لكل عنصر في صفحة الHtml حتى يستطيع فهم ما تريد

وبالنسبة لتحديدهم في الjQuery فيمكنك أن تحدد اختيار كل الأبناء للعنصر الرئيسي

عليكم السلام ورحمة الله وبركاته

اخي حتى لو غيرت الكود نحو هذا الشكل يعني الكلاس بدل الايدي

<div class='grid-posts'>
<div data-sid="v1" class="vcount">..</div>
<div data-sid="v2" class="vcount">..</div>
<div data-sid="v3" class="vcount">..</div>
<div data-sid="v4" class="vcount">..</div>
<div data-sid="v5" class="vcount">..</div>
</div>

يعطيني نفس الخلل

هل بإمكانك إطلاعي على الملفات لأقوم بالتجربة عليها ؟