On m'a dit d'utiliser document.ready lorsque j'ai commencé à utiliser Javascript / jQuery mais je n'ai jamais vraiment su pourquoi.
Quelqu'un pourrait-il fournir des directives de base sur le moment où il est logique d'encapsuler du code javascript / jquery dans jQuery document.ready
?
Quelques sujets qui m'intéressent:
.on()
Méthode de jQuery : j'utilise.on()
assez souvent la méthode pour AJAX (généralement sur les éléments DOM créés dynamiquement). Les.on()
gestionnaires de clics doivent-ils toujours être à l' intérieurdocument.ready
?- Performances: est-il plus performant de conserver divers objets javascript / jQuery à l' intérieur ou à l' extérieur de document.ready (également, la différence de performances est-elle significative?)?
- Portée de l'objet: les pages chargées en AJAX ne peuvent pas accéder aux objets qui se trouvaient à l' intérieur du document de la page précédente. Ils ne peuvent accéder qu'aux objets qui étaient en dehors de document.ready (c'est-à-dire des objets vraiment "globaux")?
Mise à jour: pour suivre une bonne pratique, tout mon javascript (la bibliothèque jQuery et le code de mon application) est en bas de ma page HTML et j'utilise l' defer
attribut sur les scripts contenant jQuery sur mes pages chargées en AJAX afin que je peut accéder à la bibliothèque jQuery sur ces pages.
javascript
jquery
dom
event-handling
document-ready
Tim Peterson
la source
la source
Réponses:
En termes simples,
Supposons que vous ayez placé votre code jQuery en
head
section et que vous tentiez d'accéder à undom
élément (une ancre, une img etc), vous ne pourrez pas y accéder car ilhtml
est interprété de haut en bas et vos éléments html ne sont pas présents lorsque votre code jQuery s'exécute.Pour surmonter ce problème, nous plaçons chaque code jQuery / javascript (qui utilise DOM) dans une
$(document).ready
fonction qui est appelée lorsque tous lesdom
éléments sont accessibles.Et c'est la raison pour laquelle, lorsque vous placez votre code jQuery en bas (après tous les éléments dom, juste avant
</body>
), il n'est pas nécessaire de$(document).ready
Il n'est pas nécessaire de placer la
on
méthode à l'intérieur$(document).ready
uniquement lorsque vous utilisez laon
méthode pourdocument
la même raison que j'ai expliquée ci-dessus.ÉDITER
À partir des commentaires,
$(document).ready
n'attend pas les images ou les scripts. C'est la grande différence entre$(document).ready
et$(document).load
Seul le code qui accède au DOM doit être dans le gestionnaire prêt. S'il s'agit d'un plugin, il ne devrait pas être dans l'événement ready.
la source
$(document).ready
. Voir çahead
et que vous êtes des scripts après la manipulation des éléments, cedocument.ready
n'est pas nécessaire. Les images sont un cas particulier cependant ...jQuery
code dans le gestionnaire prêt. Seul le code qui accède au DOM. Si c'est un plugin, ça ne devrait pas être dans l'ready
événementRéponses:
Non, pas toujours. Si vous chargez votre JS dans la tête de document, vous en aurez besoin. Si vous créez les éléments après le chargement de la page via AJAX, vous devrez le faire. Vous n'en aurez pas besoin si le script est sous l'élément html que vous ajoutez également un gestionnaire.
Ça dépend. Cela prendra le même temps pour attacher les gestionnaires, cela dépend simplement si vous voulez que cela se produise immédiatement pendant le chargement de la page ou si vous voulez qu'il attende que le document entier soit chargé. Cela dépendra donc des autres choses que vous faites sur la page.
C'est essentiellement sa propre fonction donc il ne peut accéder qu'aux vars déclarés à une portée globale (en dehors / au-dessus de toutes les fonctions) ou avec
window.myvarname = '';
la source
Avant de pouvoir utiliser jQuery en toute sécurité, vous devez vous assurer que la page est dans un état où elle est prête à être manipulée. Avec jQuery, nous accomplissons cela en plaçant notre code dans une fonction, puis en passant cette fonction à
$(document).ready()
. La fonction que nous transmettons peut simplement être une fonction anonyme .Cela exécutera la fonction que nous transmettons à .ready () une fois que le document sera prêt. Que se passe t-il ici? Nous utilisons $ (document) pour créer un objet jQuery à partir du document de notre page, puis appelons la fonction .ready () sur cet objet, en lui passant la fonction que nous voulons exécuter.
Comme c'est quelque chose que vous vous surprendrez à faire beaucoup, il existe une méthode abrégée pour cela si vous préférez - la fonction $ () fait double emploi en tant qu'alias pour $ (document) .ready () si vous lui passez une fonction:
Ceci est une bonne lecture: Jquery Fundamentals
la source
(function($){ })(jQuery);
qui enveloppe votre code afin que $ soit jQuery à l'intérieur de cette fermeture.ready () - Spécifie une fonction à exécuter lorsque le DOM est complètement chargé.
Voici une liste de toutes les méthodes jQuery
Lire la suite Présentation de $ (document) .ready ()
la source
Pour être réaliste, il
document.ready
n'est nécessaire que de manipuler le DOM avec précision et ce n'est pas toujours nécessaire ni la meilleure option. Ce que je veux dire, c'est que lorsque vous développez un gros plugin jQuery par exemple, vous l'utilisez à peine dans tout le code parce que vous essayez de le garder SEC, donc vous abstenez autant que possible dans des méthodes qui manipulent le DOM mais sont censées être invoquées plus tard. Lorsque tout votre code est étroitement intégré, la seule méthode exposéedocument.ready
est généralement celleinit
où se produit toute la magie DOM. J'espère que ça répond à ta question.la source
Vous devez lier toutes les actions dans document.ready, car vous devez attendre que le document soit complètement chargé.
Mais, vous devez créer des fonctions pour toutes les actions et les appeler à partir du document.ready. Lorsque vous créez des fonctions (vos objets globaux), appelez-les quand vous le souhaitez. Ainsi, une fois vos nouvelles données chargées et les nouveaux éléments créés, appelez à nouveau ces fonctions.
Ces fonctions sont celles où vous avez lié les événements et les actions.
la source
J'ai ajouté un lien vers un div et je voulais effectuer certaines tâches sur le clic. J'ai ajouté le code sous l'élément ajouté dans le DOM mais cela n'a pas fonctionné. Voici le code:
Cela n'a pas fonctionné. Ensuite, j'ai placé le code jQuery dans $ (document) .ready et cela a parfaitement fonctionné. C'est ici.
la source
L'événement prêt se produit lorsque le DOM (modèle d'objet de document) a été chargé.
Étant donné que cet événement se produit une fois que le document est prêt, c'est un bon endroit pour avoir tous les autres événements et fonctions jQuery. Comme dans l'exemple ci-dessus.
La méthode ready () spécifie ce qui se passe lorsqu'un événement ready se produit.
Astuce: la méthode ready () ne doit pas être utilisée avec.
la source