2009-09-16 4 views
9

J'ai une fonction de chargement et je voudrais que le code écrive du html dans un div pendant qu'il se charge, et quand il se termine, pour afficher la page. J'ai vu quelques petits scripts sur les événements ajaxStart et ajaxComplete, mais je ne suis pas sûr de la façon de les implémenter.Comment appeler jquery ajaxStart + ajaxComplete

Voici le jquery Je pense à l'aide, mais pas sûr de savoir comment mettre en œuvre dans le code que j'ai actuellement ...

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

Voici le jquery actuel J'utilise:

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

Répondre

17

S'il s'agit d'une seule div et que vous souhaitez mettre à jour son contenu avec un message/indicateur de chargement, vous pouvez le faire comme suit:

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

Je ne voudrais pas utiliser le ajaxStart et ajaxStop/ajaxCompleteglobal events sauf si vous avez un indicateur de chargement commun pour tous les appels ajax. Cela dit, il peut se faire comme suit:

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

où l'élément loading est tout ce que vous voulez révéler au cours d'un appel ajax.

+0

parfois ce contenu se charge si vite, que le message Chargement ... ne devient même pas visible.Comment définissons-nous un intervalle de temps pour cela, de sorte que les utilisateurs peuvent voir quelque chose se charge .... – defau1t