سؤال

يقوم البرنامج النصي أدناه بإنشاء عنوان url إذا كانت استجابة $.post() تحتوي على خطأ.أحاول استخدام .on() حتى أتمكن من إرفاق وظيفة بعنوان URL الذي تم إنشاؤه، لكنه لا يعمل.عندما أقوم بإضافة عنوان URL في DOM (بدون $.post) فإنه يعمل مثل السحر، ولكنه لا يريد أن يعمل إذا تم إنشاء عنوان url داخل $.post().هل هناك أي أفكار أو حل حول كيفية تشغيله؟

// Do the database check:
$.post("test.php",{searchFor : search},function(data) {
       if(data.response == true) {
           // DO SOME STUFF
       } else if(data.response == false && data.error == "noDoc") {
           $("#resultsTable").html("<tr><td colspan='6'><p><strong>No user found, <a href='#' class='addDoctor'>Click here</a> to add a doctor.</strong></p></tr>");
       } else {
           $("#resultsTable").html("<tr><td colspan='6'><p><strong>"+data.error+"</strong></p></tr>");
       }
   });
});

$(".addDoctor").on("click",function() {
   alert("test");
    return false;
});
هل كانت مفيدة؟

المحلول

$('.test') في التعليمات البرمجية الخاصة بك، يبحث عن جميع العناصر ذات فئة تسمى "اختبار" في DOM الخاص بك، ويضيف مستمعًا للنقرات إليها.سيؤثر هذا فقط على العناصر التي يمكن العثور عليها عند الاتصال بـ .on يتم تنفيذه (أي لا عند حدوث النقرة الفعلية).

إذا كنت تقوم بإضافة عناصر مع فئة الاختبار بعد الدعوة الى .on, ، سوف تحتاج إلى الاتصال .on للعنصر الذي سيكون أصل كل ما تبذلونه من .test العناصر، والتي لن يتم تدميرها أبدًا:

$(document).on('click', '.test', function() {
    alert('test');
});

للحصول على الأداء الأمثل، حدد أقرب أصل ممكن، بحيث يجب البحث في جزء أصغر من DOM عن العناصر المؤهلة.استخدام document هنا ليس بالضرورة مثاليًا، ولكنه الأقرب الذي يمكنني افتراضه، دون معرفة DOM الخاص بك.

نصائح أخرى

ربما تريد شيئًا مثل: Genacodicetagpre

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top