2010-11-07 9 views
0

hey les gars, j'ai trouvé un modèle de site très interessant qui a dans son fichier d'en-tête les lignes suivantes:?

(function($){ 
$(function(){ 

…normal jquery 

}); // end of document ready 
})(jQuery); // end of jQuery name space 

ce que cela veut dire que je pensais que si Je veux utiliser domready i VHA écrire:

$(document).ready(function(){ 

où est la différence et je peux changer cela merci pour votre aide

Répondre

4

$(function() { est juste a shortcut pour $(document).ready(function() {, ils sont équivalents. Le (function($){ .... })(jQuery); partie est juste pour la compatibilité, de sorte que $ est l'objet jQuery à l'intérieur de la portée (même si c'est quelque chose d'autre à l'extérieur).

Quelque chose à noter ici: document.ready gestionnaires reçoivent jQuery comme premier argument, donc pourrait être de façon plus concise exprimée en code du site:

jQuery(function($){ 
    …normal jquery 
}); // end of document ready 

Donc, la réponse à votre question: avez-vous le changer? Non, utilisez le format que vous préférez ... Je préfère $(function() { }); parce que c'est moins de taper et je le fais une centaine de fois par jour. Si vous trouvez $(document).ready(function() { }); beaucoup plus clair, tenez-vous-en à cela, mais ils se comportent de la même manière ... alors utilisez ce qui est le plus clair pour vous et votre équipe.

+0

pense que vous avez une faute de frappe Nick; devrait s/#/$/là – p00ya

+0

@ p00ya - ne pas suivre, où? –

1

La partie prêt DOM du code que vous avez cité:

$(function() { 
    // Document is ready let's write some jQuery! 
}); 

est tout à fait équivalent à:

$(document).ready(function() { 
    // Document is ready let's write some jQuery! 
}); 

La partie qui enveloppe l'étoffe prêt DOM est là pour un but complètement séparé:

(function($) { 
    ... 
})(jQuery); // end of jQuery namespace 

Ce qui précède est en réalité une invocation de fonction. Vous appelez une fonction anonyme et transmettez l'objet jQuery en tant qu'argument, qui est ensuite affecté au paramètre $. Cela garantit que tout le code à l'intérieur (où j'ai ...) peut utiliser $ sachant qu'il se réfère à jQuery.

Il s'agit d'une sécurité intégrée que les gens utilisent car un autre code JavaScript aurait pu affecter la variable à quelque chose d'autre que jQuery dans l'espace de navigation global. En enveloppant votre code jQuery dans une fonction (rappelez-vous - seules les fonctions ont une portée en JavaScript) qui attribue jQuery à $, vous êtes en sécurité.