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')
.
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