2014-06-04 6 views
0

나는 그것이 배열 인덱스입니다,하지만 배열에서 나는 그것이 같은 코드에 사용되는 본 것 같은데요?

HTML :

<canvas id = "id"> </canvas> 

자바 스크립트/jQuery를 :

var canvas = $("#canvas")[0]; 

[0] 부분을 지정하는 목적은 무엇이며, var canvas = $("#canvas");과 다른 점은 무엇입니까?

+0

https://api.jquery.com/id-selector/ – xgqfrms

답변

5

jQuery 컬렉션에서 DOM 노드를 반환하는 방법이며, document.getElementById('canvas') (라이브러리를 사용하기는하지만) 또는 $('#canvas').get(0);을 작성하는 더 짧은 방법입니다.

jQuery 선택기 구문에 의해 반환 된 객체 컬렉션에서 0 번째 요소, 즉 첫 번째 요소 (JavaScript의 0 인덱스 번호 매기기 사용) 요소를 효과적으로 반환합니다.

차이$('#canvas')[0]는 DOM 방법에 액세스 할 수있는 DOM 노드를 반환 반면 $('#canvas')은 (jQuery를 메소드와 jQuery를 개체에 싸서) 요소의 집합을 포함하는 jQuery를 객체를 반환하는 것은 아니지만의 jQuery 방법.

참고 :

2

그것은 기본적으로 .get(index)에 대한 바로 가기 표기법 :

각각의 jQuery 객체의 기초가되는 DOM 노드에 .get() 방법 액세스 권한을 부여합니다. index의 값이 범위를 벗어나거나 음수보다 작거나 요소 수보다 크면 undefined을 반환합니다.

실제로 jQuery 객체는 정수형 및 length 속성을 포함하는 배열 형 객체입니다. 사실, jqObj.get(index) internally uses jqObj[index]은 단지 .get(index)이며 음수 값을 처리하는 추상 수준입니다 (마지막 요소에서 뒤로 계산).


그래서, $('#canvas')[0] 당신이 HTMLCanvasElement 될 일이 당신의 jQuery 객체의 첫 번째 인덱스에 포함 된 요소에 액세스 할 수 있습니다. .getContext('2d')로, 같은를

$('#canvas')[0] === document.getElementById('canvas') 

이 방법, 당신은 '기본 속성과 메서드를 캔버스에 액세스 할 수 있습니다은 "캔버스"ID를 가진 요소가 제공, 이러한 방법 모두 동일한 DOM 요소에 대한 참조를 반환합니다 .

+3

['[]'] (https://developer.mozilla.org/en-US/docs/Web/)를 사용하는 것처럼 약간 들립니다. JavaScript/Reference/Operators/Property_Accessors)는'get' 메소드를 호출 할 것입니다 ... – Bergi

+1

@Bergi 글쎄, 여러분은 그것이 실제로 다른 방향이라는 것을 압니다. 각 jQuery 객체는 또한 배열로 가장하기 때문에'$ o.get (index)'는'$ o [index]'를 내부적으로 사용합니다. –

+1

그래, * 알았어.하지만 OP는 그렇지 않을거야 :-) – Bergi