Quelle est la différence entre ces fonctions jQuery ready?

Quelle est la différence entre

$(function(){ }); 

et

 $(document).ready(function() { }); 

Rien que ce soit.

Cette fonction se comporte exactement comme $ (document) .ready (), en ce sens qu’elle devrait être utilisée pour envelopper d’autres $ ()

Vous pouvez le voir dans le code source :

 rootjQuery = jQuery(document); ... } else if ( jQuery.isFunction( selector ) ) { return rootjQuery.ready( selector ); } 
 } else if (jQuery.isFunction(selector)) { return rootjQuery.ready(selector); } 

De la source

L’appel de $(document).ready(selector) enregistre quelques instructions.

Bien que jQuery cache $(document) interne, cela pourrait rendre $(f) plus rapide.

Benchmarké

Les deux sont équivalents, le premier est une forme abrégée.

$ (function () {}) est un raccourci pour le dom prêt

Une fonction transmise en tant qu’argument au constructeur jQuery est liée à l’événement prêt du document.

Les deux sont exactement équivalents: utilisez la forme que vous aimez.

Cela dit, personnellement, j’utilise toujours la forme étendue $(document).ready(function(){}); pour la simple raison qu’il est tout à fait évident de savoir ce que le code fait. L’idée approximative est celle du “code auto-documenté”. Toute personne qui viendra plus tard au code verra immédiatement que le code doit être exécuté sur l’événement ready du document . Avec la forme abrégée, vous devez compter sur le lecteur de votre code pour comprendre la signification.

Je vous suggère de lire ceci . Comme vous pouvez le voir

Les trois syntaxes suivantes sont équivalentes:

$(document).ready(handler)

$().ready(handler) (this is not recommended)

$(handler)

Donc, c’est à vous et à ce que vous préférez.

Ils sont effectivement les mêmes. Aucune différence.


C’est la manière native.

 $(document).ready(function() { // code }); 

Et c’est un raccourci pour le précédent.

 $(function() { // code }); 

code source jQuery

Nous avons rencontré des situations où IE9 n’exécutait pas de fonctions dans $ (function () {}); de la même manière ou au même moment que $ (document) .ready (function () {});

Le problème a surgi pour nous en particulier lors de la lecture d’informations sur une chaîne de requête et du traitement et de l’affichage de ces informations à l’écran, ou de leur utilisation pour traiter un formulaire. IE9 traiterait les informations une fois mises en cache avec $ (function (), et un utilisateur rafraîchirait la page. Mais lors de la première exécution, rien ne fonctionnait correctement. Cependant, une fois que nous passons de $ (function () {}); à $ ( document) .ready (), le problème a été résolu. Nous avons changé rien d’autre.

J’ai tellement hâte au jour où je n’aurai pas à tester IE9 et les versions inférieures.

J’utilise $(function() {}); parce que c’est plus court. Pour autant que je sache, il n’y a pas de différence entre les deux manières de le faire.