jQuery에서 [0]을 사용하는 대신 첫 번째 요소를 얻는 방법은 무엇입니까?


95

나는 jQuery를 처음 사용하며 이것이 어리석은 질문이라면 사과드립니다.

ID를 사용하여 요소를 찾을 때 항상 하나의 일치 항목이 있음을 알고 있으며 액세스하기 위해 색인 [0]을 사용합니다. 이 작업을 수행하는 더 좋은 방법이 있습니까? 예를 들어

var gridHeader = $("#grid_GridHeader")[0];

답변:


100

당신도 사용할 수 .get(0)있지만 ... ID로 찾은 요소로 그렇게 할 필요는 없으며 항상 고유 합니다. 나는 이것이 단지 예에서 감독 일 뿐이기를 바라고 있습니다.이게 실제 페이지의 경우라면 ID가 고유하도록 수정하고 대신 클래스 (또는 다른 속성)를 사용해야합니다.

.get()(같은 [0]) jQuery 객체 사용을 원 .eq(0)하거나 .first()대신 :) DOM 요소를 가져옵니다.


17
제외$("#id") /* jQuery object */ != $("#id").get(0) /* DOM Object */
BrunoLM 2010-06-23

9
@BrunoLM은 - 당신이 DOM 요소를 원하는 경우 document.getElementById('id'), 객체의 래퍼로 선택 엔진에서 엄청난 낭비의 그 ... 그냥 멀리 던져의 jQuery 객체를 생성하지 않습니다, 그것은 :) 더 좋은 이유에 대해 단지 잔인한
닉 Craver

Nick 나는 동의한다. 어쩌면 내가 jquery를 영원히 사용하는 것은 다소 어리석은 일이었을 것입니다.
Rubans 2010-06-23

2
@NickCraver-감사합니다. 난 그냥 한 무리의 교체 document.getElementById('id')로를 $('#id')[0]하지만 좋아하지 않았다 [0]. 낭비에 대한 귀하의 의견은 $0 = function(id){return document.getElementById(id);}내가 정의하려고 생각하게 만들었고 이제는 $0('id')더 좋아졌습니다. 문자의 같은 숫자는 $('#id'), 난 그냥이 될 수 있으면 좋겠다$#('id')
브루노 Bronosky에게

2
빈 결과 집합에서 잘못된 값을 반환하는 이러한 메서드의 변형이 있기를 바랍니다.
Stephen M. Harris

26

$("#grid_GridHeader:first") 잘 작동합니다.


3
여기에서 문제를 처리하는 가장 좋은 방법이라고 생각합니다. (0) .EQ 반대로 그것은 잘 읽고
데이브 그레고리

18

첫 번째 방법을 사용할 수 있습니다.

$('li').first()

http://api.jquery.com/first/

btw Nick Craver에 동의합니다-document.getElementById ()를 사용하십시오 ...


1
요소가 없으면 빈 배열을 반환합니다. 로 []평가 되므로 논리 문에서 사용하는 데주의하십시오 true.
Ashley

4

요소가 하나만 있다는 가정하에 :

 $("#grid_GridHeader")[0]
 $("#grid_GridHeader").get(0)
 $("#grid_GridHeader").get()

... 모두 동일하며 단일 기본 요소를 반환합니다.

jQuery 소스 코드 get(0)에서는 기본적으로 [0]접근 방식 과 동일한 작업을 수행 한다는 것을 알 수 있습니다 .

 // Return just the object
 ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );

다른 모든 것이 첫 번째 항목을 얻지 못하는 것 같은 get ()을 제외하고 작동하는 것에 감사드립니다.
Rubans 2010-06-23

사실 나는이 작동하지 않습니다 왜 닉 마르다의 대답에서 볼 수있는
RUBANS


3

첫 번째 선택기를 사용할 수 있습니다.

var header = $('.header:first')

단일 요소가있는 배열을 반환합니다.
Nitin

-3

다음과 같이 시도 할 수 있습니다.
yourArray.shift()

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.