Słyszałem, że querySelector
i querySelectorAll
to nowe sposoby, aby wybrać DOM
elementy. Jak wypadają w porównaniu ze starszymi metodami getElementById
oraz getElementsByClassName
pod względem wydajności i obsługi przeglądarek?
Jak wypada wydajność w porównaniu z użyciem selektora zapytań jQuery?
Czy istnieje zalecenie dotyczące najlepszych praktyk, dla którego należy użyć zestawu natywnego?
javascript
jquery
dom
GoesToEleven
źródło
źródło
getElementById
igetElementsByClassName
nadal są idealne do celów ich nazwy opisać.qS/qSA
może być używane z dowolnego kontekstu elementu, alegEBI
może być używane tylko zdocument
kontekstu.getElementById
dopasowujeid
atrybuty, aby znaleźć węzły DOM, podczasquerySelector
wyszukiwania za pomocą selektorów. Tak na nieprawidłowym selektora np<div id="1"></div>
,getElementById('1')
będzie działać, gdyquerySelector('#1')
nie powiedzie się, jeśli nie powiedzieć, dopasowując go doid
atrybutu (npquerySelector('[id="1"]')
.querySelector
iquerySelectorAll
są w pełni obsługiwane teraz. caniuse.com/#feat=queryselectorOdpowiedzi:
„Lepsze” jest subiektywne.
querySelector
to nowsza funkcja.getElementById
jest lepiej obsługiwany niżquerySelector
.querySelector
jest lepiej obsługiwany niżgetElementsByClassName
.querySelector
pozwala znaleźć elementy z regułami, których nie można wyrazić za pomocągetElementById
igetElementsByClassName
Musisz wybrać odpowiednie narzędzie do każdego zadania.
(Powyżej do
querySelector
czytaniaquerySelector
/querySelectorAll
).źródło
getElementById
>querySelector
>getElementsByClassName
, bo myślałem, żegetElementsByClassName
powinny mieć taki sam poziom wsparcia jakgetElementById
?Funkcje
getElementById
igetElementsByClassName
są bardzo specyficzne, natomiastquerySelector
iquerySelectorAll
są bardziej skomplikowane. Domyślam się, że faktycznie będą miały gorsze wyniki.Musisz również sprawdzić obsługę każdej funkcji w przeglądarkach, na które kierujesz reklamy. Im jest nowszy, tym większe prawdopodobieństwo braku wsparcia lub „buggy” funkcji.
źródło
nodelist ... is not live
czy możesz dostarczyć na to dokumentację? @ W.Prins obie metody zwracająElement
typ.