كيف يمكنني استدعاء وظيفة بعد إنشاء عنصر في jquery؟

StackOverflow https://stackoverflow.com/questions/6386128

  •  29-10-2019
  •  | 
  •  

سؤال

أريد استدعاء دالة بعد إنشاء العنصر.هل هناك طريقة للقيام بذلك؟

مثال:

$("#myElement").ready(function() {
    // call the function after the element has been loaded here
    console.log("I have been loaded!");
});
هل كانت مفيدة؟

المحلول

كيف تقوم بإنشاء العنصر؟

إذا كنت تقوم بإنشائه بتنسيق HTML الثابت، فاستخدمه فقط .ready(handler) أو .on("load", handler).إذا كنت تستخدم AJAX، فهذه غلاية أخرى من الأسماك.

إذا كنت تستخدم jQuery load() وظيفة ثم هناك رد اتصال يمكنك تشغيله عند تحميل المحتويات:

$('#element').load('sompage.html', function(){ /* callback */ });

إذا كنت تستخدم jQuery $.ajax أو $.get/$.post وظائف ثم هناك رد اتصال ناجح في ذلك:

$.ajax({
  url: 'somepage.html',
  success: function(){
    //callback
  }
});

إذا كنت تقوم فقط بإنشاء العنصر وإلحاقه بهذه الطريقة:

$('body').append('<div></div>');

ثم يمكنك القيام بذلك بدلاً من ذلك:

$('<div />', { id: 'mydiv' }).appendTo('body').ready(function(){ /* callback */ });

لكن هذا لن يهم - لأنه متزامن (مما يعني أن السطر التالي من التعليمات البرمجية لن يعمل حتى تتم إضافة العنصر إلى DOM على أي حال...- إلا إذا كنت تقوم بتحميل الصور وما إلى ذلك) لذا يمكنك فقط القيام بما يلي:

$('<div />', { id: 'mydiv' }).appendTo('body');
$('#mydiv').css({backgroundColor:'red'});

ولكن في الواقع، أقول أنه يمكنك القيام بذلك:

$('<div />', {id:'mydiv'}).appendTo('body').css({backgroundColor:'red'});

نصائح أخرى

قد ترغب في إلقاء نظرة على أحداث jQuery الحية .يمكنك إرفاق معالج حدث بمحدد إما أن يطابق الآن أو بعد إنشاء عناصر إضافية في DOM الخاص بك.

لذلك ، إذا كان لديك رمز علامة عام وقمت بإنشاء عناصر رمز رمز عام جديد بشكل ديناميكي ، فيمكنك توصيل محدد إلى معالج حدث بحيث يتم توصيل جميع عناصر رمز الترقيم العام لهذا الحدث.

فيما يلي نموذج jsFiddle الذي يعرض رمزًا لعلامة مميزة.

أتمنى أن يساعدك هذا

يمكنك تجربة هذا الرمز

Genacodicetagpre Genacodicetagpre Genacodicetagpre

أحيانًا يكون هذا مطلوبًا لعنصر DOM تم إنشاؤه / تحميله خارج البرنامج النصي الخاص بك ، إما بواسطة مكتبة js مختلفة أو حدث خارج عن سيطرتك المباشرة.

لمثل هذه السيناريوهات ، أقوم دائمًا بتعيين فاصل زمني يتحقق بشكل دوري من وجود العنصر الهدف ، وإذا كان هذا صحيحًا ، فإن الفاصل الزمني يحذف نفسه ويقوم بتشغيل وظيفة رد الاتصال.

لهذا ، لدي وظيفة محددة مسبقًا أعيد استخدامها: Genacodicetagpre

تحقق من .live () في أفضل حالاتها بعد إنشاء العنصر ،

Genacodicetagpre

وبعد ذلك أضف عنصرًا جديدًا: Genacodicetagpre

giveacodicetagpre.

أبسط طريقة هي استدعاء رد النداء مباشرة بعد إنشاء العنصر :)

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