2016-06-19 3 views
-3

이 코드는 jQuery 플러그인 자습서에서 가져 왔습니다. 그러나, 내 질문은 javascript/jquery 질문입니다.이 코드의 작동 방식은 무엇입니까? (jQuery chaining)

코드에서 filter()은 "필터링 된"개체의 컬렉션을 포함하는 개체를 반환한다는 것을 알 수 있습니다. append()이 그것을 조작하고 있습니다.

내가 묻는 것은 : 추가 기능이 모든 요소를 ​​조작하고 반환 된 객체에서 한 번만 작동하지 않는 이유는 무엇입니까?

this.filter("a").append(function() { 
    return " (" + this.href + ")"; 
}); 
+2

너는 의문스럽지 않다. 두 번째 단락에서 반환 객체에는 콜렉션이 포함되어 있다고 했으므로 "모든 요소"와 "반환 된 객체"는 같은 것입니다. – Quentin

+0

나는 이해한다. 나는 다시 말하려고 노력할 것이다. – yossi

+1

내가 무엇을 묻고 있는지 (글자 그대로) 어떻게 이해했는지는 범위의 문제입니다. 문서별로 - http://api.jquery.com/append/#append-function -'append.function()'은 "매치 된 엘리먼트들의 집합 안의 각 엘리먼트에 대해 작동합니다 [...]이 함수 내에서, this '는 세트의 현재 요소를 나타냅니다. " 다른 말로하면, 코드에서, 처음'this.filter'의 범위는 함수 자체에서'this.href'의 범위와 다릅니다. 이것은 함수를 통해 반복하는 동안 각 요소를 나타냅니다. –

답변

1

append(function)의 특성 및 초기 this 및 코드의 함수 내에서 한 범위 사이의 차이에 기인한다. http://api.jquery.com/append/#append-function에서의 jQuery 문서 당

, append(function)는 동작에 "정합 소자들의 세트의 각 요소. [...]은 함수 내 this 집합에 현재 요소를 지칭한다."

코드에서 this.filter("a")은 일치하는 요소가 포함 된 jQuery 개체이고 함수 내에서 this.href은 컬렉션을 반복하는 동안 차례대로 각 요소를 나타냅니다. 따라서 텍스트는 일치하는 모든 요소에 추가됩니다.

관련 문제