jQuery 선택기 원본 해독 (7): 요소 Matcher 함수

1824 단어
Sizzle의 Compile 실행 과정을 이해하려면 먼저 관련된 각 하위 프로그램의 기능과 관건적인 변수와 작용을 분명히 해야 한다. 나는 jQuery-1.10.2버전의 Compile 코드에 대해 하나하나 설명을 할 것이니 여러분의 도움을 바랍니다.
elementMatcher(matchers)
1. 원본 코드
 
  
function elementMatcher(matchers) {
 return matchers.length > 1 ? function(elem, context, xml) {
  var i = matchers.length;
  while (i--) {
   if (!matchers[i](elem, context, xml)) {
    return false;
   }
  }
  return true;
 } : matchers[0];
}

2. 기능
이 함수는 전송된 elem이 실행 함수 그룹 matchers에 일치하는지 확인하기 위해 함수를 되돌려줍니다. false를 되돌려주지 않으면true를 되돌려줍니다.
matchers에 원소가 하나만 있다면, 이 원소 자체를 되돌려줍니다. 그렇지 않으면 코드의function (elem,context,xml) 함수를 되돌려줍니다.
반환 함수 효과는 context와 약간 유사합니다.filter (selectors), 물론, 그 결과는 jQuery 대상이 아니라true 또는false로 되돌아옵니다.
3. 매개 변수 matchers―수조, 모든 원소는 비위조류의 매칭기 집행 함수이다.예를 들어 실제 실행 과정에서 div.map span:lt(10), 그 중에서 div와 맵의 일치 실행 함수는 matchers의 두 요소로 elementMatcher 함수로 전송되어span 노드의 부 노드가 요구에 충족하는지 필터합니다.
4, 반환 함수
4.1 matchers가 1개 이상의 요소인 경우 다음과 같은 함수를 반환합니다.
 
  
function(elem, context, xml) {
 var i = matchers.length;
 while (i--) {
  if (!matchers[i](elem, context, xml)) {
   return false;
  }
 }
 return true;
}

4.1.1 기능은 matchers의 마지막 요소부터 첫 번째 요소까지 순서대로 호출하여 전송된 elem 노드가 요구를 충족시키는지 여부에 따라 모두true로 되돌아간다. 그렇지 않으면false로 되돌아간다.
4.1.2 매개 변수
elem―검사를 기다리는 단일 노드 요소.
context - 전체 선택기 문자열이 일치하는 상하문 노드를 실행하는데 대부분 용도가 없습니다.
xml ― 현재 검색 대상이 HTML인지 XML 문서인지, HTML이면 xml 매개 변수는false입니다.
4.2 matchers가 단지 하나의 원소만 있다면 이 원소 자체를 되돌려준다.4.2.1 기능은 전송된 elem이 선택기와 일치하는지 확인하고 일치하면true를 되돌려주지 않으면false를 되돌려줍니다.
4.2.2 파라미터는 4.1.2 파라미터와 설명한다.

좋은 웹페이지 즐겨찾기