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.