2014-11-10 2 views
45

querySelector & querySelectorAllDOM 요소를 선택하는 새로운 방법이라고 들었습니다. 성능 및 브라우저 지원면에서 이전 방법 인 getElementById & getElementsByClassName과 어떻게 비교됩니까?Javascript querySelector 대 getElementById

성능을 jQuery의 쿼리 선택기를 사용하는 것과 어떻게 비교합니까?

사용할 기본 세트에 대한 권장 사항이 있습니까?

+1

더 잘 정의하십시오. 그것들은 거의 완전히 다릅니다. –

+3

이것은 "단일 크기의 스패너가 조정 가능한 스패너보다 나은가요?"라고 묻는 것과 같습니다. 대답은 : 그것들은 더 강력하고 유연하며 많은 경우에 더 우수하지만,'getElementById'와'getElementsByClassName'은 여전히 ​​그들의 이름이 기술하는 목적에 이상적입니다. – lonesomeday

+0

중복되는 장소에 대해 구체적으로 묻는다면 모두 다릅니다. 'qS'와'qSA'는 더 느릴 수도 있습니다 (아닐 수도 있습니다). 'qSA'는'gEBCN'보다 전반적으로 더 큰지지를 받고 있습니다. 'gEBCN'은 "라이브리스트"를 리턴하고'qSA'는 리턴하지 않습니다. –

답변

58

"더 나은"주관적입니다.

querySelector은 최신 기능입니다.

getElementByIdquerySelector보다 지원되는 것이 좋습니다.

querySelectorgetElementsByClassName보다 지원되는 것이 좋습니다.

querySelectorgetElementByIdgetElementsByClassName 당신은 어떤 주어진 작업에 적합한 도구를 선택해야

로 표현할 수없는 규칙 요소를 찾을 수 있습니다.

(상기의 경우, querySelector의 경우, querySelector/querySelectorAll).

+4

querySelector 지원 : http://caniuse.com/#feat=queryselector – tazboy

20

getElementByIdgetElementsByClassName은 매우 특이한 반면, querySelectorquerySelectorAll은 좀 더 정교합니다. 내 생각 엔 실제로 성능이 저하 될 것입니다.

또한 대상 브라우저에서 각 기능에 대한 지원을 확인해야합니다. 최신 버전 일수록 지원 부족 또는 기능이 "버그"가 발생할 확률이 높습니다.

+18

다음은 성능 차이입니다. http://jsperf.com/getelementbyid-vs-queryselector 예, 엄청나게 큽니다! 그건 그렇고, 나는이 대답을 좋아하지 만, 너무 짧기는하지만 여전히 많은 정보를 담고 있습니다. – thomas

+0

@thomas 귀하의 링크가 다운되었습니다. 어디서나 작동하는 링크가 있습니까? – user5508297

+1

보관 된 버전이 몇 가지 있습니다. https://web.archive.org/web/20160108040024/http://jsperf.com/getelementbyid-vs-queryselector하지만 테스트 결과는 실제로 매우 오래되었습니다 (2010). 결과는 다음과 같습니다. 보다 현대적인 엔진과는 매우 다릅니다. – thomas