2010-06-21 6 views
4

J'utilise la fonction de chargement de jQuery pour restituer une partie de mon contenu lorsque le document est prêt.Comment attendre que la fonction de chargement de jQuery restitue le contenu chargé avant d'exécuter la fonction de rappel

$(document).ready(function(){ 
    $('#header').load('header.html',function() { 
     //do call back function}); 
    $('#footer').load('footer.html'); 
}); 

Je ne veux pas que ma fonction de rappel à exécuter lorsque la requête est terminée, mais lorsque le contenu chargé (ou dom?) Est prêt à être manipulé. Comment puis-je faire ceci?

Merci

+1

Qu'est-ce qui vous fait penser que le DOM n'est pas prêt à être manipulé dans votre callback 'load()'? jQuery l'appelle * après * il a déposé le contenu de la réponse dans le conteneur cible. – Pointy

+0

vous le faites déjà, comprenez-vous ce que fait $ (document) .ready? – Prashanth

+0

J'utilise la fonction corner de jQuery sur un span qui se trouve dans le nouveau contenu chargé depuis header.html. La fonction de coin ne fonctionne pas correctement à moins que j'ajoute une alerte avant, ce que je pensais être un problème de synchronisation. Si c'est un problème de synchronisation, est-il logique que le contenu ne soit pas entièrement chargé lorsque j'essaie de le manipuler? – aos37

Répondre

2

Je suis assez sûr que vous cherchez à faire quelque chose après la fenêtre est chargée, pas le DOM.

Si vous avez un peu de code, cela dépend de la lecture des hauteurs et des largeurs de choses comme des images, (document) .ready ne fonctionnera pas car il est exécuté avant le chargement des images. J'ai déjà eu ce problème en essayant de rendre les flux RSS sur une page.

C'est le code pour faire quelque chose après la fenêtre est chargée:

jQuery(window).load(function() { 
    //Do something after the window is loaded! 
}); 
1

D'après ce que je comprends le problème ici est que le rappel est appelé dès que les données sont reçues plutôt que lorsque le navigateur a fini de le rendre. C'est un problème si votre callback s'appuie sur les propriétés de style comme exemple.

Ma solution a été de cacher le nœud parent avant le chargement, puis d'ajouter un léger délai avant de le montrer à nouveau, avec un callback placé sur la méthode show. Donc, cela fonctionne mais n'est pas à l'épreuve des balles car nous ne savons pas exactement combien de temps le contenu prendra pour le rendu.

Questions connexes