2010-10-22 5 views
0

je trouve moi-même le faire beaucoup:Alternatives à setTimeout après un rappel Ajax

window.onload = function(){ 

    $.get("http://example.com/example.html", function(data) { 
     $('#contentHere').html(data); 

     setTimeout("javaScriptClass.init()", 200); 
    }); 

} 

Mais setTimeout semble un peu hacky (et 200ms est déjà plus de trois fois la durée d'attention de l'utilisateur moyen :). Quelle est la meilleure alternative?

EDIT

javaScriptClass.init() agit sur les objets DOM de ce qui est chargé dans l'appel ajax

+1

Pourquoi avez-vous un retard? –

+0

@Nick! javaScriptClass.init() agit sur les objets DOM à partir de ce qui est chargé dans l'appel ajax – Kyle

+1

Ils seront chargés immédiatement après la ligne précédente avec l'appel '.html()', c'est une opération synchrone. –

Répondre

1

Je pense qu'il ya une certaine confusion à propos de la charge, vous pouvez simplement faire ceci:

window.onload = function(){  
    $.get("http://example.com/example.html", function(data) { 
     $('#contentHere').html(data); 
     javaScriptClass.init(); 
    });  
} 

Après le $('#contentHere').html(data);, les éléments DOM seront prêts à être utilisés. Jetez aussi un coup d'œil à .load() pour la fixation (en cas autres gestionnairesonload peuvent avoir besoin d'attacher), comme ceci:

$(window).load(function(){  
    $.get("http://example.com/example.html", function(data) { 
     $('#contentHere').html(data); 
     javaScriptClass.init(); 
    });  
}); 

Bien que, à moins que vous êtes en attente sur les images, ce qui peut être appelée dans un gestionnaire document.ready et tire plus tôt, ce qui entraîne une meilleure expérience utilisateur.

+0

Merci Nick. Je suis embrouillé mais c'est évidemment la bonne réponse. – Kyle

Questions connexes