Situation étrange:
Je construis une barre de menus utilisant et ... p> Pour une raison quelconque, même avant Tout Strong> le chargement de la fin du document, je reçois le message d'alerte avec une largeur incorrecte. Seulement lorsque je relâche le message, le reste du document chargé et je reçois la largeur de droite comme il se doit. P> Pourquoi ma fonction est appelée avant tout le chargement de la fin du document?
Existe-t-il un moyen de charger la fonction uniquement après un certain élément de chargement (exemple: l'élément jQuery code> et
CSS code>.
Dans mon fichier JavaScript, j'ai une fonction sur-prêt code> comme: p>
NAV code>)? P> p>
6 Réponses :
Vous pouvez utiliser window.load , ce sera déclenché après que toute la ressource a terminé le chargement.
$(window).load(function(e) { mark_active_menu(); });
Cela n'a pas de sens. Le sélecteur est $ ("NAV LI") CODE> ... Je ne vois aucune image ni aucune image ... Le problème est avec Ajax charger le contenu.
@Lan I Dons Ajax dans mon code, mais aucune n'est chargée avec le document, mais seulement après la déclenchement de l'utilisateur.
@Lior donc si rien n'est mis sur la page jusqu'à ce que après b> L'utilisateur le déclenche, comment $ (document) .Ready code> exécuter au bon moment? De toute façon,
$ (fenêtre) .charger code> ne doit pas faire de différence pour votre problème pour la même raison
@Lan $ (fenêtre) .LoLLa résolu mon problème. Je pense que vous avez raison si un Ajax impliqué dans votre charge. Je vous apprécie le temps !!
Assurez-vous, essayez la fenêtre charger code>
Cela ne fait aucune différence - le problème est avec Ajax charger le contenu.
Essayez sur l'événement de chargement de la fenêtre:
$(window).load(function() { //Stuff here });
Cela ne fait aucune différence - le problème est avec Ajax charger le contenu.
Toutes les solutions actuelles ne traitent que des symptômes du problème principal. Si vous voulez que votre gestionnaire soit exécutant après em> tous vos charges AJAX, vous pouvez utiliser une promesse. var ajax1 = $.ajax();
var ajax2 = $.ajax();
jQuery(function($) {
$.when.apply($, [ajax1, ajax2]).done(function() {
// your code here
});
});
Les autres réponses ne prennent aucune matière ajax en considération. Les demandes AJAX peuvent être effectuées ou non à effectuer à l'heure window.Onload code> incendies. C'est la bonne réponse. Je voudrais éviter que je n'ai plus de votes à gauche :(
Merci, cela fonctionne extrêmement bien. Y a-t-il de toute façon pour que cela se produise encore plus vite? Je devais remplacer le texte dans un DIV chargé de manière dynamique, cela fonctionne, il n'ya qu'un petit retard.
Avant (parfois, ne se charge pas absolument au début, quelques millisecondes après (0-200ms environ)): après: p>
Dans ma situation de travail avec Ajax et HTML. J'ai le même problème avec les fonctions $ (document) .Readady () et $ (fenêtre) .charger (). J'ai résolu ce problème en ajoutant un gestionnaire de mon événement (qui devrait fonctionner à HTML DOC), à la fonction JQuery qui fonctionne juste après la fin de l'Ajax Reguest. Lisez ceci: "" jquery.post () " (troisième paramètre dans la fonction).
dans mon code, il ressemble à ceci: p>
Chargez-vous des parties de votre document avec Ajax?
Vous pouvez accrocher à
$ (fenêtre) .on ('redimensionner', fn) code> ou
$ (fenêtre) .On ("charger", fn) code>.
De plus, la méthode
prête () code> n'est pas adoptée l'événement, mais plutôt l'objet JQuery lui-même.
Oui, j'ai peu de pièces Ajax mais elles ne sont pas dans ma fonction prête $ (document)
@Bradm Eh bien, le code ne l'utilise pas, donc nous ne saurons pas si c'était censé être un événement :)
@Lior Peu importe où ils sont.
$ (document) .Ready code> (et
$ (fenêtre) .charger code>) n'attends pas le contenu dynamique. Vous devez attendre jusqu'à ce que toutes les demandes soient terminées.