Quelle différences entre ces fonctions jQuery ?

Toutes vos questions sur jQuery, CSS, HTML5, mise en page...
ph.gras
Addict
Addict
 
Messages: 71
Inscription: 23 Juin 2013, 13:39

Quelle différences entre ces fonctions jQuery ?

Messagede ph.gras » 03 Sep 2014, 19:45

Quelles différences entre ces 3 fonctions jQuery ?
1.
Code: Tout sélectionner
(function($){
// mes trucs;
})(jQuery);

2.
Code: Tout sélectionner
jQuery(function($){
// mes trucs;
});

3.
Code: Tout sélectionner
jQuery(document).ready(function($){
// mes trucs;
});

Y en a-t-il d'autres ?

Avatar de l’utilisateur
Galdon
Administrateur du site
Administrateur du site
 
Messages: 2188
Inscription: 06 Sep 2008, 22:05

Re: Quelle différences entre ces fonctions jQuery ?

Messagede Galdon » 03 Sep 2014, 21:10

Les extraits de code 2 & 3 sont identiques : ils servent à déclarer une fonction callback que jQuery va appeler lorsque le DOM sera chargé (document ready). La version 3 est la version "normale" : on sélectionne la page (document) avec le sélecteur jQuery, et on attache une fonction callback à l'événement "ready". En l'occurence il s'agit d'une fonction anonyme, qui prend un argument $ (cela permet de pouvoir écrire $ au lieu de jQuery pour faire référence à jQuery à l'intérieur de la fonction).

Le premier extrait est plus technique et plus subtil, en gros tu peux enlever la fonction, le code à l'intérieur est exécuté au moment ou le code est lu par le moteur javascript. Mais cette notation permet d'emprisonner du code à l'intérieur d'une fonction anonyme, on s'en sert pour éviter de pourrir le scope global avec des variables, c'est une sorte de namespace en Javascript. Là encore on retrouve la même astuce de passer l'objet jQuery en paramètre à la fonction, de manière à pouvoir utiliser $ à la place de jQuery à l'intérieur de la fonction. J'ai utilisé cette technique pour mon plugin iframeTracker : https://github.com/finalclap/iframeTrac ... tracker.js
"Si tu veux me parler, envoie-moi un... FAX !" - George Abitbol

ph.gras
Addict
Addict
 
Messages: 71
Inscription: 23 Juin 2013, 13:39

Re: Quelle différences entre ces fonctions jQuery ?

Messagede ph.gras » 04 Sep 2014, 12:08

Merci, c'est très intéressant ! J'ai vu qu'on pouvait mettre autre chose que document pour demander
l'activation du code de la fonction à un autre moment du chargement de la page…

Ton plugin jQuery, il fonctionne aussi sur les frames d'un autre domaine ? Genre Facebook, adSense
ou autres ?

OK, je vois comment ça se passe :
Code: Tout sélectionner
(function($){
   // bla-bla ton code :
   // [...]
   $(document).ready(function(){
      $.iframeTracker.init();
   });
})(jQuery);


=============================================
EDIT: Oui, effectivement, il traque les clics situés sur les frames d'autres domaines. Je n'avais pas lu
la description du plugin. Ça m'intéresse aussi, mais c'est une autre question.


Retourner vers HTML / CSS / Javascript

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités