¿Cómo obtengo el primer elemento en lugar de usar [0] en jQuery?

91

Soy nuevo en jQuery, disculpas si esta es una pregunta tonta.

Cuando lo uso, encuentro un elemento usando la identificación, sé que siempre hay una coincidencia y para acceder a él usaría el índice [0]. ¿Existe una forma mejor de hacer esto? Por ejemplo

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

Respuestas:

98

También puede usar .get(0), pero ... no debería necesitar hacer eso con un elemento encontrado por ID, que siempre debe ser único. Espero que esto sea solo un descuido en el ejemplo ... si este es el caso en su página real, deberá corregirlo para que sus ID sean únicos y usar una clase (u otro atributo) en su lugar.

.get()(como [0]) obtiene el elemento DOM, si desea utilizar un objeto jQuery .eq(0)o en su .first()lugar :)

Nick Craver
fuente
17
Excepto que$("#id") /* jQuery object */ != $("#id").get(0) /* DOM Object */
BrunoLM
9
@BrunoLM: si quieres un elemento DOM document.getElementById('id'), no crees un objeto jQuery solo para tirarlo ... eso es un desperdicio tremendo, desde el motor de selección hasta el contenedor de objetos, es simplemente exagerado sin una buena razón :)
Nick Craver
Nick, estoy de acuerdo, tal vez estaba siendo bastante tonto solo usando jquery para todo.
Rubans
2
@NickCraver - Gracias por eso. Simplemente reemplacé un montón de document.getElementById('id')con $('#id')[0]pero no me gustó [0]. Tu comentario sobre el despilfarro me hizo pensar en definir $0 = function(id){return document.getElementById(id);}y ahora me gusta $0('id')más. La misma cantidad de caracteres que $('#id'), solo desearía que pudiera ser$#('id')
Bruno Bronosky
2
Ojalá hubiera una variante de estos métodos que devolviera un valor falso de un conjunto de resultados vacío.
Stephen M. Harris
25

$("#grid_GridHeader:first") también funciona.

Mervyn
fuente
3
Creo que esta es la mejor manera de manejar su problema aquí. Se lee bien, a diferencia de .eq (0)
Dave Gregory
18

Puedes usar el primer método:

$('li').first()

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

por cierto, estoy de acuerdo con Nick Craver: use document.getElementById () ...

Bennidhamma
fuente
1
Esto devuelve una matriz vacía si no se encuentran elementos. Tenga cuidado al usar enunciados lógicos como []evaluará true.
Ashley
4

Suponiendo que solo hay un elemento:

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

... son todos equivalentes, devolviendo el único elemento subyacente.

Desde el código fuente de jQuery, puede ver que get(0), debajo de las cubiertas, esencialmente hace lo mismo que el [0]enfoque:

 // Return just the object
 ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
Ken Redler
fuente
Gracias por todo lo demás funciona aparte de get () que no parece obtener el primer elemento.
Rubans
En realidad, puedo ver en la respuesta de Nick Crave por qué eso no funcionará
Rubans
3

Puede utilizar el primer selector.

var header = $('.header:first')
Mate
fuente
Devuelve una matriz con un solo elemento.
Nitin
-3

Puedes probar así:
yourArray.shift()

hjijin
fuente