2010-03-23 10 views
0

의 우리가이 다음 있다고 가정 해 봅시다 :jQuery에서 배열 스타일로 선택한 요소의 값을 저장하는 방법은 무엇입니까?

<p class="first">This is paragraph 1.</p> 
<p class="second">This is paragraph 2.</p> 
<p id="third">This is paragraph 3.</p> 
<p>This is paragraph 4.</p> 

우리는 value 변수에 요소의 값을 저장하고 다음과 같이 표시 할 수 있습니다. 우리는 요소의 수를 알고 있지만 우리는 많은 요소가있는 경우 우리가 문제를 얻을 수 있습니다 우리가 루프로 수행하려는 경우 위의 방법

var value = $('p').slice(3,4); 
value.text(); // result --> This is paragraph 4 

는 문제가 없습니다. 왜 내가 이렇게하면 오류가 발생합니까?

$('p')[3].text(); 

루프를 만들어 값을 가져 오려면 어떻게해야합니까? 이 같은

답변

2

루프 :

$('p').each(function(i) { 
    alert($(this).text()); 
    //or this: 
    alert($('p').eq(i).text()); 
}); 

당신이 [3] 당신이 .text() 방법이있는 DOM 요소 <p>하지 jQuery 오브젝트를 얻고을

.

$('p')[3] == DOM Element, doesn't have `.text()` 
$('p').eq(3) == jQuery object, has `.text()` 
1

jQuery 객체는 다른 jQuery 객체가 아닌 DOM 요소의 배열로 작동 할 수 있습니다.
따라서 $(...)[3]을 쓰면 jQuery 객체가 아닌 원시 DOM 요소가 생깁니다.

$('p').eq(3).text(); 
1

당신이 뭘하려는 건지에 대한 문제가 $('p')[3]이의 jQuery 객체를 반환하지 것입니다, 따라서 그것은 text() 기능이 없습니다 :

당신은 eq 함수를 호출 할 필요가있다.

대신,이 같은 것을 사용 :

$('p.eq(3)') 

// OR 

$('p').eq(3) 

엄지 손가락의 일반적인 규칙은 객체가 어떤 jQuery를 방법이 있는지 여부를 확실하지 않은 경우, 당신은 단순히 포장 떨어져 아마 잘 것이다 $(...) 또는 jQuery(...)의 경우 jQuery.noConflict();을 사용하고 있으므로 Prototype 또는 $을 변수로 사용하는 다른 라이브러리를 사용하는 경우 더 많이 사용됩니다.

1

오류의 이유는 배열 표기법을 사용하여 가져올 때 실제 DOM 요소를 가져 오는 것입니다. DOM 요소에는 text() 함수가 없습니다. 모든 값을 얻으려면 각각을 사용하십시오.

특정 요소를 가져 오려면 eq()를 사용하십시오.

var value = $('p').eq(3).text(); 
관련 문제