Sizzle의 컴파일 실행 과정을 이해하려면 먼저 관련된 각 서브루틴의 기능과 주요 변수 및 기능을 이해해야 합니다. jQuery-1.10.2 버전의 컴파일 코드를 하나씩 설명하겠습니다. 도와주세요.
elementMatcher(매처)
1. 소스코드
2. 기능
이 함수는 수신된 요소가 일치하는 실행 함수 배열 일치자와 일치하는지 확인하는 함수를 반환합니다. 일치하지 않으면 false를 반환하고, 그렇지 않으면 true를 반환합니다.
매처에 요소가 하나만 있는 경우 요소 자체를 반환하고, 그렇지 않으면 새 함수(코드의 함수(elem, context, xml) 함수)를 반환합니다.
반환 함수 효과는 context.filter(selectors)와 다소 유사합니다. 물론 결과는 jQuery 객체가 아닌 true 또는 false만 반환합니다.
3. 매개변수
매처(Matchers) - 배열, 각 요소는 의사 클래스가 아닌 매처 실행 함수입니다. 예: 실제 실행 과정에서 div.mapspan:lt(10), div와 map의 일치하는 실행 함수는 일치자의 두 요소로 elementMatcher 함수에 전달되어 범위 노드의 상위 노드가 필터링되는지 여부를 필터링합니다. 요구 사항을 충족합니다.
4. 복귀 기능
4.1 매처에 2개 이상의 요소가 있는 경우 다음 함수가 반환됩니다.
4.1.1 기능
일치자는 들어오는 요소 노드가 요구 사항을 충족하는지 여부를 일치시키기 위해 마지막 요소부터 첫 번째 요소까지 순차적으로 호출됩니다. 모두 충족되면 True가 반환되고, 그렇지 않으면 false가 반환됩니다.
4.1.2 매개변수
elem - 확인할 단일 노드 요소입니다.
컨텍스트 - 전체 선택기 문자열 일치를 수행하는 컨텍스트 노드로, 대부분의 경우 쓸모가 없습니다.
xml——현재 검색 개체가 HTML입니까 아니면 XML 문서입니까? HTML인 경우 xml 매개변수는 false입니다.
4.2 매처에 요소가 1개만 있는 경우 요소 자체를 반환합니다.
4.2.1 기능
들어오는 요소가 선택기와 일치하는지 확인하고, 일치하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
4.2.2 매개변수
4.1.2 매개변수 설명과 동일합니다.