Si j'ai beaucoup de fonctions au démarrage, doivent-elles toutes être regroupées dans un seul et même endroit ?
$(document).ready(function() {
ou puis-je avoir plusieurs déclarations de ce type ?
Si j'ai beaucoup de fonctions au démarrage, doivent-elles toutes être regroupées dans un seul et même endroit ?
$(document).ready(function() {
ou puis-je avoir plusieurs déclarations de ce type ?
Vous pouvez en avoir plusieurs, mais ce n'est pas toujours la chose la plus soignée à faire. Essayez de ne pas en abuser, car cela affecterait sérieusement la lisibilité. Sinon, c'est parfaitement légal. Voir ci-dessous :
http://www.learningjquery.com/2006/09/multiple-document-ready
Essayez ceci :
$(document).ready(function() {
alert('Hello Tom!');
});
$(document).ready(function() {
alert('Hello Jeff!');
});
$(document).ready(function() {
alert('Hello Dexter!');
});
Vous verrez que c'est équivalent à ceci, notez l'ordre d'exécution :
$(document).ready(function() {
alert('Hello Tom!');
alert('Hello Jeff!');
alert('Hello Dexter!');
});
Il est également intéressant de noter qu'une fonction définie dans le cadre d'une $(document).ready
ne peut être appelé à partir d'un autre bloc $(document).ready
bloc, je viens de faire ce test :
$(document).ready(function() {
alert('hello1');
function saySomething() {
alert('something');
}
saySomething();
});
$(document).ready(function() {
alert('hello2');
saySomething();
});
La sortie était :
hello1
something
hello2
Il n'est pas judicieux de se fier à l'ordre d'exécution lorsque vous utilisez plusieurs instructions $(document).ready(). Chacune d'entre elles doit s'exécuter indépendamment de toute autre ayant déjà été exécutée ou non.
@AoP - Je ne sais pas si cela a beaucoup de sens, s'ils ne sont pas exécutés dans l'ordre, alors ils sont complètement dénués de sens dans le contexte de l'application, donc utiliser plusieurs blocs $(document).ready( serait complètement cassé.
@karim79 Il est certain que cette question (celle de l'OP) s'applique surtout à l'écriture d'un bout de code compliqué avec de multiples préoccupations de démarrage - c'est-à-dire un code qui est toujours s'exécutent lorsque le chargement est terminé, et d'autres qui ne sont nécessaires que sur certains nœuds de contenu ? Dans une telle situation, le contexte devrait être cloisonné, et l'ordre d'exécution devrait être sans importance - être capable d'assigner l'événement "DOM prêt" sans écraser le précédent devient une fonctionnalité utile, indépendamment du comportement d'ordonnancement.
Cela ne pose pas de problème si vous avez le contrôle total du code attaché à la page. Si quelqu'un a déjà écrit ce code dans un autre fichier joint à la page, vous pouvez le déclarer comme ceci.
Je ne suis pas sûr de ce que vous essayez de dire. Mais si vous mettez cela dans votre tête, et que vous incluez 15 autres JS externes, qui contiennent tous un (ou plusieurs) document.load, cela fonctionnera toujours comme s'il n'y en avait qu'un seul. Il est important de mentionner que le scoop de chaque fonction/variable se termine par le crochet fermant de la fonction $(document).ready.
J'essaie juste de dire que parfois, d'autres personnes auront écrit des modules attachés à la page qui ont une fonction document ready déjà déclarée, donc vous n'aurez peut-être pas le luxe de déplacer tout votre code dans une seule fonction (ce qui, bien sûr, serait idéal). Je me méfierais également d'avoir trop de choses ici cependant, car nous aurons un gonflement de la fonction Document Ready, ce qui peut rendre le code tout aussi difficile à maintenir.
Oui il est possible d'avoir plusieurs appels à $(document).ready(). Cependant, je ne pense pas que vous puissiez savoir de quelle manière ils seront exécutés. (source)
Merci, il est bon de clarifier ce point, car, en dépit de la sagesse générale sur le sujet, l'objectif de l'UE est d'améliorer la qualité de vie de ses citoyens. Page jQuery ready() ne dit pas vraiment si vous pouvez le faire ou non (au moment de la rédaction :)). Il fait cependant une sorte de sous-entend c'est bon, si vous lisez entre les lignes d'une phrase : Ready handlers bound this way are executed after any bound by the other three methods above.
L'utilisation d'un div n'est pas prise en charge. Si, pour une raison quelconque, vous le faites, vous le faites à vos propres risques : La méthode .ready() ne peut être appelée que sur un objet jQuery correspondant au document actuel.
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.
1 votes
Nécessaire principalement lorsque j'ai besoin de charger plusieurs fichiers js où chacun contient $(document).ready() ; fonction
0 votes
@leora cette question a été posée lors d'un entretien :D Merci