2010-01-25 3 views
9

이것은 더 많은 호기심에 관한 질문입니다. 수행 할 때 다음여러 항목을 선택할 때의 jQuery 성능

$('.selector1, .selector2').doSomething() 

jQuery를 완전히 각각 선택 일치하는 객체의 각 세트를 얻기 위해 두 번 DOM을 통과 않거나은 DOM 중 하나 주사로 모든 ​​요소를 ​​찾는?

+0

나는 코어에서 보이는 ive에서 여러 노드 속성 (nodeName, NodeType, id 등)에 대해 정규식을 사용하기 때문에 어떤 단일 선택기가 DOM 반복을 생성하기 때문에 그렇게 생각하지 않는다. 그러나 Im은 100 % 긍정이 아닙니다. 그래서 내부에서 더 익숙한 다른 사람들에게 연기 할 것입니다 :-) – prodigitalson

+0

실제로는 예제가 좋지 않습니다. 왜냐하면 ''노드가 HTML에 존재하지 않기 때문입니다. –

+0

당신이하고 싶은 것이 있다고 생각합니다. 선택기 엔진 인 Sizzle을 찾으십시오. 소스 코드는 다음에서 볼 수 있습니다. http://github.com/jeresig/sizzle/ http://github.com/jeresig/sizzle/blob/master/sizzle.js – artlung

답변

1

나는 그것을 사용하여,이를 찾기 위해 기본 브라우저 기능을 사용하여 생각 :

document.getElementsByClassName() 
1

정말 브라우저에 따라 달라집니다. 최신 브라우저에서는 모든 DOM 쿼리에 document.querySelectorAll을 사용합니다 (이 클래스는 클래스의 document.getElementsByClassName을 호출합니다). 이 기능을 지원하지 않는 구형 브라우저에서는 당연히 느려질 것입니다.

일반적으로 id로 물건을 찾으려면 먼저 범위를 좁히는 것이 좋습니다. 클래스와 태그 이름은 속도면에서 다음에 있습니다. 기본적으로 기본적으로 지원되는 DOM 작업이 가장 좋습니다.

+0

대부분의 경우 모든 선택기에 대해 매번 DOM을 통과하게됩니다. DOM을 통과하는 방식은 선택기의 유형 (요소 대 ID)에 따라 다릅니다. –

+0

예, 정규식을 사용하여 모든 쿼리를 분할하고 한 번에 하나씩 실행합니다. 클래스 나 ID에 대한 성능은 걱정하지 않아도됩니다. –

관련 문제