J'ai entendu dire que querySelector
& querySelectorAll
sont de nouvelles méthodes pour sélectionner des DOM
éléments. Comment se comparent-ils aux anciennes méthodes, getElementById
et getElementsByClassName
en termes de performance et visionneur?
Comment les performances se comparent-elles à l'utilisation du sélecteur de requête de jQuery?
Existe-t-il une recommandation de bonnes pratiques pour quel ensemble natif utiliser?
javascript
jquery
dom
vaToEleven
la source
la source
getElementById
etgetElementsByClassName
sont toujours idéales aux fins de leurs noms décrivent.qS/qSA
peut être utilisé à partir de n'importe quel contexte d'élément, maisgEBI
ne peut être utilisé qu'à partir dudocument
contexte.getElementById
fait correspondre lesid
attributs pour trouver des nœuds DOM, tandis que lesquerySelector
recherches par sélecteurs. Donc , pour un exemple de sélection invalide<div id="1"></div>
,getElementById('1')
fonctionnerait toutquerySelector('#1')
échouerait, à moins que vous lui dites de faire correspondre l'id
attribut (par exemplequerySelector('[id="1"]')
.querySelector
etquerySelectorAll
sont entièrement pris en charge maintenant. caniuse.com/#feat=queryselectorRéponses:
«Mieux» est subjectif.
querySelector
est la nouvelle fonctionnalité.getElementById
est mieux pris en charge quequerySelector
.querySelector
est mieux pris en charge quegetElementsByClassName
.querySelector
vous permet de rechercher des éléments dont les règles ne peuvent pas être exprimées avecgetElementById
etgetElementsByClassName
Vous devez choisir l'outil approprié pour une tâche donnée.
(Dans ce qui précède, pour
querySelector
lirequerySelector
/querySelectorAll
).la source
getElementById
>querySelector
>getElementsByClassName
, parce que je pensaisgetElementsByClassName
devrait avoir le même niveau de soutiengetElementById
?Les fonctions
getElementById
etgetElementsByClassName
sont très spécifiques, tandis quequerySelector
etquerySelectorAll
sont plus élaborées. Je suppose qu'ils auront en fait une performance pire.Vous devez également vérifier la prise en charge de chaque fonction dans les navigateurs que vous ciblez. Plus il est récent, plus la probabilité de manque de support ou de "buggy" est élevée.
la source
nodelist ... is not live
pouvez-vous fournir de la documentation à ce sujet? @ W.Prins les deux méthodes renvoient leElement
type.