2009-12-19 1 views
2

У меня есть настройки много, как это:Jquery: Добавление данных в DIV после операции Аякса нагрузки

$('.container a').click(function(event) { 
    event.preventDefault(); 
    $('#contents').remove(); 
    $(this).parent().append("<div id=\"contents\"></div>"); 
    $('#contents').html('<img src="/images/loading.gif" />') 
        .load("stuff.html") 
        .append("<div id=\"closebutton\"></div>"); 
}); 

Однако «Append» часть, кажется, выполняется до завершения нагрузки, так что closebutton ДИВ получает перезапись содержимого stuff.html. Как заставить его дождаться завершения операции ajax до выполнения окончательного добавления?

спасибо :)
Мала

ответ

8

установка append внутри функция обратного вызова будет работать.

$('.container a').click(function(event) { 
    event.preventDefault(); 
    $('#contents').remove(); 
    $(this).parent().append("<div id=\"contents\"></div>"); 
    $('#contents').html('<img src="/images/loading.gif" />') 
       .load('stuff.html',{},function(){ 
        $(this).append('<div id=\"closebutton\"></div>"); 
       }); 
}); 
+0

спасибо, что это сработало отлично – Mala

4

Используйте функцию обратного вызова [Функция вызывается, когда запрос Ajax завершен (не обязательно успех)] для нагрузки, а затем добавить содержимое.

$('#contents').html('<img src="/images/loading.gif" />') 
        .load("stuff.html",function() { AppendContent(); }) 

function AppendContent() 
{ 
    // do your append function here 
}