이것은 더 많은 호기심에 관한 질문입니다. 수행 할 때 다음여러 항목을 선택할 때의 jQuery 성능
이$('.selector1, .selector2').doSomething()
jQuery를 완전히 각각 선택 일치하는 객체의 각 세트를 얻기 위해 두 번 DOM을 통과 않거나은 DOM 중 하나 주사로 모든 요소를 찾는?
이것은 더 많은 호기심에 관한 질문입니다. 수행 할 때 다음여러 항목을 선택할 때의 jQuery 성능
이$('.selector1, .selector2').doSomething()
jQuery를 완전히 각각 선택 일치하는 객체의 각 세트를 얻기 위해 두 번 DOM을 통과 않거나은 DOM 중 하나 주사로 모든 요소를 찾는?
나는 그것을 사용하여,이를 찾기 위해 기본 브라우저 기능을 사용하여 생각 :
는document.getElementsByClassName()
정말 브라우저에 따라 달라집니다. 최신 브라우저에서는 모든 DOM 쿼리에 document.querySelectorAll을 사용합니다 (이 클래스는 클래스의 document.getElementsByClassName을 호출합니다). 이 기능을 지원하지 않는 구형 브라우저에서는 당연히 느려질 것입니다.
일반적으로 id로 물건을 찾으려면 먼저 범위를 좁히는 것이 좋습니다. 클래스와 태그 이름은 속도면에서 다음에 있습니다. 기본적으로 기본적으로 지원되는 DOM 작업이 가장 좋습니다.
대부분의 경우 모든 선택기에 대해 매번 DOM을 통과하게됩니다. DOM을 통과하는 방식은 선택기의 유형 (요소 대 ID)에 따라 다릅니다. –
예, 정규식을 사용하여 모든 쿼리를 분할하고 한 번에 하나씩 실행합니다. 클래스 나 ID에 대한 성능은 걱정하지 않아도됩니다. –
나는 코어에서 보이는 ive에서 여러 노드 속성 (nodeName, NodeType, id 등)에 대해 정규식을 사용하기 때문에 어떤 단일 선택기가 DOM 반복을 생성하기 때문에 그렇게 생각하지 않는다. 그러나 Im은 100 % 긍정이 아닙니다. 그래서 내부에서 더 익숙한 다른 사람들에게 연기 할 것입니다 :-) – prodigitalson
실제로는 예제가 좋지 않습니다. 왜냐하면 ''노드가 HTML에 존재하지 않기 때문입니다. –
당신이하고 싶은 것이 있다고 생각합니다. 선택기 엔진 인 Sizzle을 찾으십시오. 소스 코드는 다음에서 볼 수 있습니다. http://github.com/jeresig/sizzle/ http://github.com/jeresig/sizzle/blob/master/sizzle.js – artlung