2014-05-13 2 views
1

그래서 간단한 HTML 페이지가 있습니다JQuery와 좁은 방 행동

<h1>Start</h1> 
<canvas class="myCanvas" width="400" height="400"></canvas> 
<canvas class="myCanvas" width="400" height="400"></canvas> 

을 그리고 내가 할 JQuery와, 다음

> $(".myCanvas") 
| [<canvas class=​"myCanvas" width=​"400" height=​"400">​, 
| <canvas class=​"myCanvas" width=​"400" height=​"400">​] 

과에

> $(".myCanvas").first() 
| [<canvas class=​"myCanvas" width=​"400" height=​"400">​] 

는 내가 가야 생각 첫 번째() 메소드 호출에서 단일 요소 (예 :

)
> $(".myCanvas").get(0) 
| <canvas class=​"myCanvas" width=​"400" height=​"400">​ 

첫 번째 방법은 왜 배열을 반환합니까?

답변

6

.first() 메서드는 결과 집합을 첫 번째 요소로 필터링하고 jQuery 개체를 반환하는 반면 .get(0)은 첫 번째 DOM 요소를 반환하기 만합니다.

jQuery 개체가 배열로 표시되는 이유는 jQuery 개체가 프로토 타입에 추가 메서드가있는 DOM 요소의 향상된 배열로 작동하기 때문입니다. 따라서 .get(0)은 실제로는 [0]과 같습니다.

+0

너무 빠르다. – Matthew

+0

또는 단순히'$ (". myCanvas") [0]' –

1

는 내가 첫 번째() 메소드

번호로 호출에서 하나의 요소를 얻어야한다 생각 first은 단지 하나 개의 첫 번째 요소, 또는 어떤 요소에로 (JQuery와 수집을 반환하지 않습니다 all), jQuery 메서드를 추가로 호출 할 수있다. Array을 반환하지 않고 단지 some special array-like object을 반환합니다.

대조적으로 get은 컬렉션의 첫 번째 DOM 요소 또는 undefined을 반환합니다. Documentation을 인용

0

:

세트에서 첫 번째 매칭 요소의 세트를 감소시킨다.