Avertissement: N'essayez pas ceci à la maison
Pourquoi, si je suis à l'aide de jQuery, n' $($)
gel de la page?
Avertissement: N'essayez pas ceci à la maison
Pourquoi, si je suis à l'aide de jQuery, n' $($)
gel de la page?
$($)
est un raccourci pour $(document).ready($)
. Donc, il va exécuter la fonction (lorsque le DOM est prêt ou directement lorsque cela est déjà le cas).
La fonction transmise à l' .ready
est passé à la fonction jQuery pour des raisons de commodité (particulièrement utile lorsque vous êtes en noConflict
mode). Donc, $($)
appellerons $
avec $
comme argument - et tout ce qui va se produire à nouveau, ce qui est récursivité sans fin.
Une autre explication:
$($)
.$
) pour l'une, interne, ready
de la liste.ready
liste".ready
liste $
, donc il appelle $
.$
de la fonction comme argument de ces fonctions.$
avec $
comme argument.$
fonction voit une fonction comme argument, mais parce que le DOM est prêt, il appelle directement la fonction (il n'y a rien à attendre).$
fonction est appelée avec $
comme argument.Maintenant, c'est ce que j'appelle "jQueryception."
Vous appelez ensemble de la bibliothèque jQuery à l'intérieur de jQuery.
Plus d'informations;
Lorsque vous appelez "$" (défini comme jQuery de base de la fonction par la bibliothèque jQuery), il initialise le jQuery et tente d'appeler la fonction définie si il en a un. En fait, quand vous appelez "$($);" vous serez l'appel de jQuery à l'intérieur de jQuery et ça va être l'appel de jQuery, encore et encore.
À partir de jQuery 1.7.1 code source;
// HANDLE: $(function)
// Shortcut for document ready
} else if ( jQuery.isFunction( selector ) ) {
return rootjQuery.ready( selector );
}
Et
rootjQuery = jQuery(document);
Comme vous pouvez le voir, lorsque vous appelez $($); il tente d'appeler jQuery avec le nom de votre fonction et si vous l'appelez avec jQuery nouveau la même chose va se produire à l'infini comme je l'ai expliqué avant.
$
est un alias pour l' jQuery
de l'usine de la fonction.
L' jQuery
usine de fonction, lorsqu'il est passé d'une fonction comme premier param, exécute la fonction à l' document.ready
et transmet jQuery
comme premier paramètre.
Donc vous vous retrouvez avec une récursivité infinie de départ lors de l' document.ready
est atteint.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.