2010-02-12 7 views

Répondre

6

Dans sa résolution, il n'y a pas de différence, ils sont équivalents

à partir du code source pertinente

jQuery = window.jQuery = window.$ = function(selector, context) { 
    // The jQuery object is actually just the init constructor 'enhanced' 
    return new jQuery.fn.init(selector, context); 
} 

jQuery.fn = jQuery.prototype = { 
init: function(selector, context) { 

    /* .... irrelevant code.... */ 

    // HANDLE: $(function) 
    // Shortcut for document ready 
    else if (jQuery.isFunction(selector)) 
     return jQuery(document).ready(selector);  
    } 
} 
+0

+1 - J'étais trop fainéant pour chercher ça. :) – ChaosPandion

+0

Il m'est juste arrivé de l'avoir ouvert devant moi :) –

+0

Équivalent en effet, et à l'heure actuelle, mais ils ne sont pas exactement les mêmes (évidemment). On demande explicitement qu'une fonction soit liée en tant que gestionnaire d'événement à l'événement "ready", et l'autre est une requête moins spécifique pour exécuter quelque chose au moment "ready", sans la fixer explicitement sur l'événement "ready". – Pointy

0

-vous dire:

$(function() 
{ 
    /* ... */ 
}); 

Ils sont équivalents dans jQuery. Ce dernier est un raccourci pour le premier.

1

Si vous voulez dire

$(document).ready(function() {/* code here */}); 

et

$(function() {/* code here */}); 

alors il n'y a pas de différence entre les deux. Ce dernier est juste un raccourci qui fait la même chose que le premier.

1

Dans tous les cas, ces deux instructions font la même chose. En interne cependant le second appellera le premier.

1

Je pense qu'il est important de souligner que la ligne jQuery officielle est que la seconde syntaxe:

$(function() { 
    // code here 
}); 

est préféré. Pourquoi? Parce qu'il prévoit la possibilité que M. Resig & Co. proposera une nouvelle façon brillante d'effectuer l'initialisation en charge, ce qui est bien mieux que d'utiliser l'événement «prêt». S'ils le font, et que vous utilisez la (deuxième) façon de faire plus simple, alors votre code bénéficiera immédiatement de l'amélioration sans avoir besoin de changer quoi que ce soit. Si vous utilisez la liaison explicite à l'événement "ready", vous vous en tenez à cette approche jusqu'à ce que vous la changiez.

+0

Je pense qu'il est très probable que si une meilleure façon d'exécuter le code lorsque le DOM a été chargé est trouvée, l'équipe choisirait de changer le code dans l'événement ready et déléguerait toujours '$ (function() {}); à lui. –

Questions connexes