2009-09-16 17 views
9

Mam funkcję load i chciałbym, aby kod zapisał jakiś html do div podczas ładowania, a gdy się zakończy, wyświetli stronę. Widziałem kilka małych zapisów w zdarzeniach ajaxStart i ajaxComplete, jednak nie jestem pewien, jak je zaimplementować.Jak wywoływać jquery ajaxStart + ajaxComplete

Oto jQuery Mam na myśli używając jednak nie wiem, jak zaimplementować w kodzie mam obecnie ...

$(document).ajaxStart(function(){ 
    $('#content').html("Loading Content..."); 
    }); 

Oto aktualny jquery Używam:

//Load content 
$(".load").click(function(){ 
    $("#content").empty();   
    loadName = $(this).attr("id"); 
    $("#content").load("/content/" + loadName + ".php"); 
    }); 

Odpowiedz

17

Jeśli jest to pojedynczy element div i chcesz zaktualizować jego zawartość za pomocą komunikatu/wskaźnika ładowania, możesz to zrobić w ten sposób:

$("#content").html('<strong>Loading...</strong>') 
      .load("/content/" + loadName + ".php"); 

Nie używałbym ajaxStart i ajaxStop/ global events, chyba że masz wspólny wskaźnik ładowania dla wywołań ajax dla wszystkich. Powiedział, że można to zrobić w następujący sposób:

$("#loading").bind("ajaxStart", function(){ 
    $(this).show(); 
}).bind("ajaxStop", function(){ 
    $(this).hide(); 
}); 

gdzie element loading to, co chcesz, aby odsłonić podczas wywołania AJAX.

+0

czasami zawartość ładuje się tak szybko, że wiadomość Ładowanie ... nie jest widoczna. Jak ustawić pewien przedział czasu, aby użytkownicy mogli zobaczyć, że coś ładuje się .... – defau1t

Powiązane problemy