Différence entre $ (document.body) et $ (‘body’) JQuery

Je suis un débutant JQuery et en parcourant quelques exemples dans certains codes trouvés.

$(document.body) et $('body')

Quelqu’un pourrait-il me dire s’il y a une différence entre ces deux?

Ils se réfèrent au même élément, la différence est que lorsque vous dites document.body vous transmettez l’élément directement à jQuery. Alternativement, lorsque vous passez la chaîne 'body' , le moteur de sélection jQuery doit interpréter la chaîne pour déterminer le ou les éléments auxquels elle fait référence.

En pratique, le travail sera accompli.

Si cela vous intéresse, vous trouverez plus d’informations dans la documentation de la fonction jQuery .

$(document.body) utilise le document référence global pour obtenir une référence au body , tandis que $('body') est un sélecteur dans lequel jQuery obtiendra la référence à l’élément sur le document .

Aucune différence majeure que je puisse voir, pas de gain de performance notable de l’un à l’autre.

Les réponses ici ne sont pas complètement correctes. Fermez, mais il y a une affaire de bord.

La différence est que $ (‘body’) sélectionne réellement l’élément par son nom, tandis que document.body fait référence à l’object direct sur le document.

Cela signifie que si vous (ou un script malhonnête) écrase l’élément document.body (honte!), $ (‘Body’) fonctionnera toujours, mais pas $ (document.body). Donc, par définition, ils ne sont pas équivalents.

J’oserais deviner qu’il existe d’autres cas d’arête (tels que des éléments globalement identifiés dans IE) qui déclencheraient également un élément de corps écrasé sur l’object de document, et la même situation s’appliquerait.

Il ne devrait y avoir aucune différence, peut-être que le premier est un peu plus performant mais je pense que c’est sortingvial (vous ne devriez pas vous en soucier, vraiment).

Avec les deux, vous enroulez la dans un object jQuery

Les deux sont équivalents. Bien que la deuxième expression passe par une recherche de haut en bas depuis la racine DOM. Vous voudrez peut-être éviter la surcharge supplémentaire (même minuscule que cela puisse être) si vous avez déjà un object document.body en main pour que JQuery se termine. Voir http://api.jquery.com/jQuery/ #Selector Contexte

J’ai trouvé une grande différence de timing lors des tests sur mon navigateur.

J’ai utilisé le script suivant:

ATTENTION: exécuter cela gèlera un peu votre navigateur, voire le plantera.

 var n = 10000000, i; i = n; console.time('selector'); while (i --> 0){ $("body"); } console.timeEnd('selector'); i = n; console.time('element'); while (i --> 0){ $(document.body); } console.timeEnd('element');