Lorsqu'on veut effectuer des opérations JavaScript sur les éléments d'une page Web côté client, il est important de s'assurer d'abord que les objets permettant d'effectuer de telles manipulations soient bel et bien créés.
Ceci sera le cas pour le code d'une balise <script> placée juste avant le </body>.
Cependant, il arrive que les balises <script> soient placées plus haut dans la page pour toutes sortes de raisons.
Dans ces cas, il faudra travailler avec l'instruction jQuery $(document).ready(); ou, sous sa forme abrégée, $(function() { ... });.
Voici la structure typique du code qui doit être effectué lorsque les objets sont entièrement chargés sur la page.
<script>
$(function() {
... // les instructions placées ici peuvent manipuler les objets représentant les éléments HTML
});
</script>
Le bloc de code précédent aurait donc pu être écrit comme suit :
<script>
$(document).ready(function() {
...
});
</script>
En comparant la syntaxe des deux extraits de code, on voit que la section (document).ready est optionnelle.
La seconde notation est plus longue à écrire mais elle montre mieux ce qui se passe :
Notez d'abord le signe de dollar au début de l'expression. Ce signe est un alias pour jQuery. On aurait donc pu changer $(document).ready(function() { ... }); pour jQuery(document).ready(function() { ... });
De façon plus concrète, le signe de dollar, appelé le sélecteur jQuery, permet d'accéder à l'objet correspondant à ce qui est entre parenthèses. Dans le cas présent, il permet d'accéder à l'objet représentant la page Web (document).
Le plus beau dans tout ça, c'est que ready() retournera true dès que le DOM sera créé, avant-même que le contenu de la page soit chargé dans le navigateur. Donc, l'exécution du code associé se déroulera le plus tôt possible dans le cycle de chargement de la page.
Prenez note que les variables locales définies dans une fonction anonyme ne pourront pas être utilisées à l'extérieur de cette fonction, ce qui est souhaitable pour éviter les conflits de noms de variables.
En résumé, on utilisera $(function() { ... }); pour écrire les lignes de code qui doivent être exécutées automatiquement dès que le DOM sera créé.
Ex :
<script>
$(function() {
// applique la fonction datepicker() à tous les élément ayant la classe datepicker
$(".datepicker").datepicker();
});
</script>
« .ready() ». jQuery. http://api.jquery.com/ready/
« $( document ).ready() ». jQuery. http://learn.jquery.com/using-jquery-core/document-ready/
« Introducing $(document).ready() ». Learning jQuery. http://www.learningjquery.com/2006/09/introducing-document-ready/
▼Publicité