Moyen le plus rapide de trouver la balise body via jQuery

Sur chaque document prêt, j’ai besoin d’obtenir la balise body via jQuery et je suis plus curieux de connaître la réponse à cette question qu’autre chose.

Disons qu’il s’agit de la balise body de chaque page de mon site:

 

Est-il plus rapide d’interroger la balise body uniquement par le nom de la balise:

 $('body') 

ou interrogez-le par son identifiant:

 $('#body') 

Le moyen le plus rapide serait $(document.body) .
Cela n’implique aucune parsing de sélecteur.

$('body') est beaucoup plus rapide (dans Firefox et Chrome) que $('#body') .

Tester

jQuery optimise la recherche de l’élément body . Voici la source jQuery appropriée:

 if ( selector === "body" && !context && document.body ) { this.context = document; this[0] = document.body; this.selector = selector; this.length = 1; return this; } 

Donc, utiliser $("body") sera à peu près aussi rapide que $(document.body) , comme suggéré dans d’autres réponses. Utiliser $("body") sera certainement plus rapide que de donner au body un id , car si un id est utilisé, le code optimisé ci-dessus ne peut pas être exécuté. jQuery utilisera getElementById , qui est rapide, mais pas aussi vite que ci-dessus!

modifier

Comme l’a souligné @SLaks, $(document.body) est le plus rapide, ce qui est logique lorsque vous regardez la source jQuery qui gérera un sélecteur d’élément DOM plutôt qu’une chaîne:

 if ( selector.nodeType ) { this.context = this[0] = selector; this.length = 1; return this; } 

Le nom de la balise est le plus rapide de Chrome et probablement de la plupart des navigateurs. Plus rapide encore serait de sauter l’encapsuleur jQuery:

 document.getElementsByTagName("body"); 

Ou

 document.body