CSS 선택기는 오른쪽에서 왼쪽으로 브라우저 엔진과 일치합니다. 그래서 그들은 먼저 아이들을 찾은 다음 부모가 규칙의 나머지 부분과 일치하는지 확인합니다.
- 왜 이런거야?
- 스펙이 말했기 때문입니까?
- 왼쪽에서 오른쪽으로 평가 된 경우 최종 레이아웃에 영향을 줍니까?
나에게 가장 간단한 방법은 요소 수가 가장 적은 선택기를 사용하는 것입니다. 따라서 ID는 먼저 1 요소 만 반환해야하므로 ID가 우선합니다. 그런 다음 가장 적은 수의 노드를 가진 클래스 나 요소 일 수 있습니다. 예를 들어 페이지에 하나의 범위 만있을 수 있으므로 범위를 참조하는 규칙을 사용하여 해당 노드로 직접 이동하십시오.
내 주장을 뒷받침하는 몇 가지 링크가 있습니다.
- http://code.google.com/speed/page-speed/docs/rendering.html
- https://developer.mozilla.org/en/Writing_Efficient_CSS
그것은 하나의 아이의 모든 부모보다는 부모의 모든 아이 (많을 수도 있음)를 보지 않아도되도록 이런 식으로 수행되는 것처럼 들립니다. DOM이 깊어도 RTL 일치에서 여러 노드가 아닌 레벨 당 하나의 노드 만 봅니다. CSS 선택기 LTR 또는 RTL을 평가하는 것이 더 쉽고 빠릅니까?
#foo
선택기는 모든 노드와 일치해야합니다. jQuery는 $ ( "# foo")는 자체 규칙으로 자체 API를 정의하기 때문에 항상 하나의 요소 만 반환한다고 말할 수 있습니다. 그러나 브라우저는 CSS를 구현해야하며 CSS는 문서의 모든 것을 주어진 ID로 일치시킵니다.
querySelectorAll
)를 사용합니다. 다른 경우에는 Sizzle이 사용됩니다. Sizzle는 여러 ID와 일치하지 않지만 QSA는 (AYK) 일치합니다. 선택 경로, 선택기, 컨텍스트 및 브라우저 및 버전에 따라 다릅니다. jQuery의 Query API는 "Native First, Dual Approach"라는 것을 사용합니다. 나는 그것에 관한 기사를 썼다. 그러나 그것은 아래로 떨어졌다. : 당신이 여기에서 찾을 수 있습니다 비록 fortybelow.ca/hosted/dhtmlkitchen/JavaScript-Query-Engines.html