2011-02-18 2 views
0

$(this):first-child 내가 .each 루프에서 $(this)first-child을 사용하는 방법을 알고하지 않았다사용 (이)

잘못된 구문입니다.

+1

그리고 어디 코드는? – nyuszika7h

답변

0

.find()으로 할 수 있습니다.

HTML

<div id='myDiv'> 
    <p>hello</p> 
    <p>world</p> 
</div> 

자바 스크립트

$('#myDiv').each(function() { 
    alert($(this).find(':first-child').text()); 
}); 

jQuery :first-child in .each() loop - jsFiddle

+0

은'$ ('# myDiv : fist-child')'하지 않습니까? 즉, 'each-each'루프없이 직접 검색을 수행하십시오. 그게 전부는 아니지만 (하나의 div의 하위 트리에있는 모든 first-children ...) 오히려'$ ('. myClass> : first-child')'라고 말하면 어떨까요? (클래스 'myClass'를 가진 모든 객체의 첫번째 자식) – falstro

+0

@roe OP는'.each()'루프에서 말했습니다. 어디에서나 코드를 볼 수 없으므로 루프가 필요한지 여부는 알 수 없습니다. – nyuszika7h

+0

네, 맞아요, 당신 말이 맞아요, 방공호가별로 말할 길이 없다고 생각 했어요. 그래서 그가 원하던 것이 아닐 수도 있다는 것을 알았습니다. – falstro

0

이 작동 할 수 있지만 순서가 보장되어 있는지 확실하지 않습니다 :

$(this).children()[0]; 
0

나는 '이'는 JQuery와 대상이 아닌 가정하지만, DOM 객체,이 짓은하지 않을 것 너는 원하는가?

this.childNodes[0] 

또한 텍스트 노드를 반환하며, JQuery에서이를 수행하는지 알 수 없습니다.

경우에만 myClass 클래스 노드의 첫 번째 'DIV'자식의 자식 노드를 원한다면, 당신은

$(':first-child', this) 

이 예제를 참조 시도해야 다르게

$(".myClass > div:fist-child").each(function() {...}) 
+1

jQuery 객체 인 것처럼 보입니다. 'children()'은 텍스트 노드를 리턴하지 않지만'find()'는 리턴합니다. –

+1

@Andrew; 그는'.each'를 사용하고 있는데,'this'는 DOM- 객체를 가리키고 있습니다. 그래서 JQuery 작업을하고 싶다면'$ (this)'처럼 감쌀 필요가 있습니다. – falstro

3

당신의 .each 루프를 수행했다 그 에 jsbin

+0

당신이 나에게 그것을 게시했지만, 당신의 호출은'.find()'때문에 내 해결책이 빠릅니다. [jQuery 소스] (https://github.com/jquery/jquery/blob/master/src/core.js#L170-174)를보십시오. – nyuszika7h

+0

다음은 [jsPerf 테스트] (http://jsperf.com/jquery-find-vs-context)입니다 (더 많은 ops/초가 더 좋습니다). 약간의 차이를 보여 주지만 경우에 따라 컨텍스트가 더 빠를 수도 있지만 여전히 두 번째 호출입니다. – nyuszika7h

관련 문제