J'ai beaucoup de HTML généré sur $ (document) .Readady () code>. J'ai un simple système de fenêtre. Mais non seulement il est généré sur $ (document) .Readady () code> - aussi certains éléments HTML (différents fichiers JS mettent des choses dans $ (document) .Readady () code>) . Je veux que mon système de fenêtre soit généré après $ (document) .Ready () code> est appelé. Comment puis-je gérer une fonction à appeler après tout le code enregistré dans $ (document) .Ready () code> est terminé? p>
8 Réponses :
Il n'y a rien après cette fonction, donc si vous avez des chargeurs AJAX, ne pensez que vous pouvez faire est de vous attendre, puis de commencer à rendu p>
Modifier mais je me demande pourquoi vous ne structurez pas votre code pour éliminer cela. P>
Il y a un autre événement qui est tiré plus tard. C'est $ (fenêtre) .charger (); Ceci est tiré après que toutes les ressources soient chargées.
Mais vous voulez peut-être ceci: p> de cette façon, vous pouvez séparer votre code dans les fonctions. P> P >
Remarque: fenêtre.Load Fires lorsque toutes les ressources sont chargées, pas seulement des images
Eh bien cela signifierait que je devrais appeler loadwindowsystem () code> dans chaque document où j'utilise $ (document) .Ready ("") pour générer HTML ... et aussi la charge .js sera tellement dire important ...
Merci Didier, je l'ai changé dans ma réponse.
@mywalljson Si vous souhaitez avoir la même fonctionnalité dans plusieurs documents, utilisez simplement un fichier .js et l'inclure à partir de divers documents.
EDIT: Ajout de la lettre latérale - Cela ne comptera que si vous utilisez ASP.NET, la fonctionnalité de pagéload mentionnée est séparée de JQuery. Voir plus d'infos ici P> $ (document) .Ready () code> est appelé juste après la fin du chargement de la DOM.
PAGELOAD () CODE> est appelé Suivant sur une minuterie 0, mais méfiez-vous, il est exécuté après chaque publication partielle. P>
Si vous voulez quelque chose à tirer juste après tout $ (document) .Ready () code> appels, vous pouvez le mettre une fois n'importe où dans votre page: $(document).ready(function() {
setTimeout(function() {
// call your code here that you want to run after all $(document).ready() calls have run
}, 1);
});
Je ne préconise généralement pas en utilisant Settimeout code> strong>, mais vous pouvez construire sur la réponse de @ jfien00 pour créer une approche plus abstraite: $(document).ready(function() {
setTimeout(function() {
$(document).trigger('afterready');
}, 1);
});
$(document).bind('afterready', function() {
// call your code here that you want to run after all $(document).ready() calls have run
});
$(window).load(function(){
//some code after ready
});
Il y a beaucoup de discussions ici qui se promènent autour de la réponse. C'est la réponse exacte à la question posée.
En ajoutant une autre fonction de gestionnaire, le document est prêt, le Le gestionnaire sera presque certainement le dernier dans la file d'attente d'événement prêt. Vous donnant efficacement une fonction de maîtrise immédiate instantanée "POST".
$(document).ready(function() {
$(document).ready(function() {
// code to run "after" ready
});
});
Vous pouvez utiliser
$(window).load(function(){
alert("Window Loaded");
}
C'est beaucoup de $ (document) .Ready ()! ;-)
Donc, vous voulez un .ready () pour votre document.Ready ()? Ce n'est pas la façon dont JQuery fonctionne - contrairement à quelque chose comme WordPress sur PHP, en raison du modèle JavaScript basé sur l'événement JQuery n'aurait aucun moyen de «savoir» que tout le code que vous avez mis dans les fonctions prêtes () est terminé. Donc, il n'y a pas d'événement appelé après le document.Ready (). Vous devrez créer et attendre que des événements se terminent par vous-même ou utilisez la fenêtre.Load ().