Eu ouvi isso querySelector
e querySelectorAll
são novos métodos para selecionar DOM
elementos. Como eles se comparam aos métodos mais antigos getElementById
e getElementsByClassName
em termos de desempenho e suporte do navegador?
Como o desempenho se compara ao uso do seletor de consulta do jQuery?
Existe uma recomendação de prática recomendada para qual conjunto nativo usar?
javascript
jquery
dom
vai para Eleven
fonte
fonte
getElementById
egetElementsByClassName
ainda são ideais para os fins seus nomes descrevem.qS/qSA
pode ser usado a partir de qualquer contexto de elemento, masgEBI
só pode ser usado a partir dodocument
contexto.getElementById
corresponde aosid
atributos para encontrar nós DOM, enquantoquerySelector
pesquisa por seletores. Assim, para um seletor inválido por exemplo<div id="1"></div>
,getElementById('1')
iria trabalhar enquantoquerySelector('#1')
seria um fracasso, a menos que você diga a ele para coincidir com oid
atributo (exquerySelector('[id="1"]')
.querySelector
equerySelectorAll
são totalmente suportados agora. caniuse.com/#feat=queryselectorRespostas:
"Melhor" é subjetivo.
querySelector
é o recurso mais recente.getElementById
é melhor suportado do quequerySelector
.querySelector
é melhor suportado do quegetElementsByClassName
.querySelector
permite encontrar elementos com regras que não podem ser expressas comgetElementById
egetElementsByClassName
Você precisa escolher a ferramenta apropriada para qualquer tarefa.
(Acima, para
querySelector
lerquerySelector
/querySelectorAll
).fonte
getElementById
>querySelector
>getElementsByClassName
, porque eu pensei quegetElementsByClassName
deve ter mesmo nível de apoio comogetElementById
?As funções
getElementById
egetElementsByClassName
são muito específicas, enquantoquerySelector
equerySelectorAll
são mais elaboradas. Meu palpite é que eles terão um desempenho pior.Além disso, você precisa verificar o suporte de cada função nos navegadores que você está direcionando. Quanto mais recente for, maior será a probabilidade de falta de suporte ou de a função "apresentar erros".
fonte
nodelist ... is not live
você pode fornecer documentação para isso? @ W.Prins ambos os métodos retornam oElement
tipo.