2011-08-10 6 views
2

내가이 코드를 가지고, 이제 가정 해 봅시다 :jQuery 객체에는 무엇이 들어 있습니까?

<ul> 
    <li><strong>list</strong> item 1 - 
    one strong tag</li> 
    <li><strong>list</strong> item <strong>2</strong> - 
    two <span>strong tags</span></li> 
    <li>list item 3</li> 
    <li>list item 4</li> 
    <li>list item 5</li> 
    <li>list item 6</li> 
</ul> 

<script> 
    var x = $("li"); 
    for (var k in x){ 
     alert(k + x[k]); 
    } 
</script> 

문제는 다음과 같습니다 경보 출력이 너무 많은 것! 왜? 왜 li 요소 만 출력하지 않습니까 ?? li 요소는 어디에 저장 되나요 ?? jQuery 메서드가 일반적으로 적용되는 li 요소 만 출력하는 방법 ??

+1

또 어떤이 출력합니까? http://jsfiddle.net/d5beA/ –

+0

jQuery를 각각 사용하면 컬렉션의 멤버/메소드를 표시하는 것입니다. – Sleeperson

답변

3

:이 DOMnode 참조입니다 이상 당신은 단순히 jQuerys에게 루프에 자신의 .each() 방법을 사용한다 일치하는 세트 li 요소 집합뿐만 아니라 경고 대상 객체의 당신이 정상 for 루프를 사용하는 경우 (또는 다른 사람이 언급 한 것처럼, JQuery와 each 방법)

, 그것은 작동합니다 :

var x = $("li"); 
for (var k = 0; k < x.length; k++){ 
    alert(k + x[k]); 
} 
+0

+1'for ... in'은 배열이나 배열과 같은 객체를 반복하는 잘못된 방법입니다. –

3

프로토 타입 체인 전체에 경고합니다. jQuery (javascript)의 각 함수를 사용하여 li 요소를 반복합니다. 또한 in은 객체를 반복 할 때 올바른 선택으로 제안되지 않습니다.

1

jQuery "개체"에는 DOM 노드 참조 만 포함되어 있지 않습니다. 그런 식으로 반복하면 (for..in) 객체에 직접있는 모든 속성을 가져 와서 프로토 타입 체인을 통해 상속합니다. 당신은 모든 속성을 얻을 이유입니다, 프로토 타입 체인을 통해 상속 된 모든 속성을 포함한 모든 속성을 반복하는 for...in 구조를 사용

x.each(function(index, node) { 
    console.log('Hi, I am at index ', index, ' and my reference is: ', node); 
}); 
1

jQuery를이 선택 일치하는 DOM 요소 주위의 객체를 포함, 참조 자세한 내용은 http://api.jquery.com/jQuery/을 참조하십시오.

경고의 내용은 해당 개체의 기능 및 속성입니다.

관련 문제