web-dev-qa-db-fra.com

Rendre $ globalement accessible avec jQuery.noConflict ()

Le Codex favorise cette méthode d’utilisation de $ dans un fichier JavaScript de plugin/thème:

jQuery(document).ready(function($) {
    // $() will work as an alias for jQuery() inside of this function
});

Mais si vous faites cela, vous n’avez accès qu’à $ dans ready (). Je pense que les fonctions doivent être divisées en petits modules appelés de ready (), pas toutes regroupées dans ready (), donc si j'utilise la méthode du Codex, je dois passer $ à chaque fonction, ce qui est ennuyeux et brut. Ecrire jQuery tout le temps au lieu d'utiliser simplement $ est aussi ennuyant.

Je peux juste faire $ = jQuery.noConflict(); au début de mon fichier JavaScript, puis $ est disponible partout, mais je suppose que cela pourrait causer des problèmes avec d’autres plugins/thèmes dans certaines situations. Mes recherches n'ont abouti à aucune explication approfondie ni réponse définitive. Quelqu'un at-il des idées?

6
Ian Dunn

Vous n'avez pas besoin de $ = jQuery.noConflict();

Enveloppez simplement les fonctions en dehors de document.ready () dans:

(function($){  
  // use $ here safely
})(jQuery);
9
onetrickpony

espérons que cette réponse pourra aider quelqu'un

mettre ce code:

 $ = jQuery.noConflict(true);

avant :

 $(document).ready(function($){ ... });
0
Johnnatan