سؤال

أحاول معالجة بعض العناصر بعد تحميلها باستخدام .Load (). لدي كل شيء يتم تحميله بشكل صحيح ، لكن لا يمكنني أن أستهدف أي عناصر داخل أي من العناصر المحملة. هذا يبدو وكأنه شيء سيكون سهلاً ، لكن يمكنني وضع إصبعي عليه.

أنا أستخدم رد الاتصال بعد تحميل العناصر ، ولكن يبدو أن DOM لا يدرك وجودها؟

function load_page(){
    $('#page_name').load("/page-name/ .page", null, load_complete());
}

function load_complete() {
    $('#page_name .book_img').addClass('hello');
}

حسنًا ، هذا هو المكان الذي أنا فيه الآن. لقد أضفت...

$('#wrapper').ajaxComplete(function() {
    $('#page_name .book_img').addClass('hello');
}

الذي يعمل. يجب أن يكون هناك فرق بين .Autocomplete والاستعمال الذي يتم تعبئته مع وظيفة .Load (). لا أحب هذا حقًا لأنه يطلق عليه في كل مرة يتم فيها تحميل حدث Ajax ، لكنه يجعلني أبعد قليلاً عن الطريق.

أي شخص لديه أي شيء أفضل؟

تعديل

حاولت أيضا ...

$('#wrapper').ajaxComplete(function() {
    $('#page_name .book_img').addClass('hello');
}

وهو نوع من اللطيف لأنه ينتظر حتى تتم جميع مكالمات أياكس قبل استدعاء الوظيفة. ربما هذه هي الطريقة للقيام بذلك ، ولكن لا يزال يبدو أن وظيفة .Load () ستعتني بهذا؟

لا يوجد حل صحيح

نصائح أخرى

يبدو أن تنفيذ وظيفة الاتصال الخاصة بك بدلاً من نقلها إلى طريقة التحميل:

function load_page(){
    // $('#page_name').load("/page-name/ .page", null, load_complete());
    $('#page_name').load("/page-name/ .page", null, load_complete);
}

function load_complete() {
    $('#page_name .book_img').addClass('hello');
}

إذن ما تم تمريره إلى طريقة التحميل هو NULL لأنه لا توجد قيمة إرجاع في LOAD_COMPLETE

في بعض الأحيان يستغرق HTML بعض الوقت لتقديمه. حاول إضافة تأخير قبل الوصول إلى المحتوى الجديد:

$('#page_name').load("/page-name/ .page", null, window.setTimeout(function(){load_complete()},50);

يجب عليك تضمين JavaScript التي تتم معالجة كائناتك المحملة في العنصر الذي يتم تحميله. هذا لأنه قد ركض بالفعل من خلال كل جافا سكريبت.

تعديل

جرب هذا ، قم بتعيين عدم التزامن على خطأ حتى يمكنك إضافة رد اتصال بعد تحميله.

$.ajax ({
  async: false,
  type: "GET",
  dataType: "html",
  url: "/page-name/ .page",
  complete: function(){load_complete()};
});

تحديث

مهلا ، هناك أيضا هذا الاختزال احصل على بيان أستخدمه أحيانًا. يفاجئني أن هذه لا تعمل في البرنامج النصي الخاص بك ..

$.get($(this).attr('href'), function(response) { $('#content').html(response); });
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top