2010-11-05 3 views
10

Laissez-moi comprendre. Selon les meilleures pratiques, nous devrions initialiser jQuery au bas de la page. Si nous faisons cela, toute référence à l'objet jQuery (c'est-à-dire $ ou jQuery) au-dessus de la référence sera nulle. Cependant, comme pour $(document).ready(), la raison pour laquelle cette fonction jQuery est toujours nécessaire est quand vous voulez retarder l'exécution d'une fonction après le chargement de la page. Cela semble être un conflit. Comment puis-je utiliser la fonctionnalité $(document).ready() en haut de la page et toujours faire référence à jQuery en bas de la page? Je pense que jQuery devrait être initialisé en haut de la page pour cette raison même.

+0

Vous avez raison. Vous devez mettre votre référence jQuery initiale avant d'utiliser $, donc si vous utilisez $ en haut de la page, c'est là que vous devez référencer la bibliothèque. – willoller

+0

Oui - le conseil d'efficacité est en fait d'avoir tout javascript au bas de la page. Vous pouvez toujours avoir l'initialisation jQuery en tant que partie supérieure de ce javascript et utiliser $ (function() {...}); APRÈS cela –

+0

Ce qui m'ennuie, c'est que le framework de Telerik MVC doit référencer son javascript et ses frameworks dépendants (ie: jquery) au bas de la page pour que leurs contrôles fonctionnent correctement. J'ai décidé d'utiliser window.onload() pour le moment. – burnt1ce

Répondre

1

Placez simplement $(document).ready ci-dessous où vous initialisez jQuery, quel que soit l'emplacement. En réalité, vous devriez mettre tous vos JS en bas, même $(document).ready.

+3

Ce n'est pas très facile à faire quand vous ' réécrire les contrôles. – burnt1ce

+2

Eh bien, vous n'avez pas mentionné cela dans la question originale: P. – Loktar

3

Si vous allez mettre vos scripts au bas de la page à des fins d'efficacité, et qu'il n'y a pas d'autres éléments (au-delà de </body> and </html>), vous n'aurez même pas besoin d'utiliser $(document).ready(...);.

Placer votre code en haut de la page est sensé sémantiquement, et le temps de chargement "économies" est négligeable dans la plupart des cas. Cela ne fait vraiment la différence que lorsque les scripts sont énormes ou lorsque les scripts sont sur un autre serveur actif ou non.

Si vous créez un lien direct vers jQuery, je vous suggère de le mettre en bas de la page. Si vous créez une liaison locale avec jQuery, le top devrait être bon. Assurez-vous simplement d'utiliser du code réduit.

+1

Attends ... quoi? J'avais l'impression que document.ready était un peu plus robuste que de coller du code à la fin de l'étiquette du corps. –

+1

@SkippyChalmers, 'document.ready' est plus robuste que' body.onload', mais * both * sont des événements déclenchés lorsque le DOM a fini d'analyser/exécuter des éléments sur la page. Si vous placez un script à la fin de la page, vous aurez essentiellement fait la même chose. La seule différence sera que tous les scripts auront été exécutés avant le rappel de chargement, ce qui pourrait être important si le code d'exécution repose sur une bibliothèque qui n'a pas été chargée. – zzzzBov

Questions connexes