Come ottengo il primo elemento invece di usare [0] in jQuery?


91

Sono nuovo di jQuery, mi scuso se questa è una domanda stupida.

Quando lo uso, trovo un elemento usando l'id, so che c'è sempre una corrispondenza e per accedervi userei l'indice [0]. C'è un modo migliore per farlo? Per es

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

Risposte:


98

Puoi anche usarlo .get(0)ma ... non dovresti aver bisogno di farlo con un elemento trovato da ID, che dovrebbe essere sempre univoco. Spero che questa sia solo una svista nell'esempio ... se questo è il caso nella tua pagina attuale, dovrai correggerlo in modo che i tuoi ID siano univoci e utilizzare invece una classe (o un altro attributo).

.get()(come [0]) ottiene l'elemento DOM, se si desidera utilizzare un oggetto jQuery .eq(0)o .first()invece :)


17
Tranne quello$("#id") /* jQuery object */ != $("#id").get(0) /* DOM Object */
BrunoLM

9
@BrunoLM - Se vuoi un elemento DOM, document.getElementById('id')non creare un oggetto jQuery solo per buttarlo via ... è tremendamente dispendioso, dal motore di selezione al wrapper dell'oggetto, è solo eccessivo senza una buona ragione :)
Nick Craver

Nick Sono d'accordo, forse ero piuttosto sciocco usando jquery per tutto.
Rubans

2
@ NickCraver - Grazie per questo. Ne ho appena sostituiti alcuni document.getElementById('id')con $('#id')[0]ma non mi è piaciuto il file [0]. Il tuo commento sullo spreco mi ha fatto pensare di definire $0 = function(id){return document.getElementById(id);}e ora mi piace di $0('id')più. Stesso numero di caratteri $('#id'), vorrei solo che fosse$#('id')
Bruno Bronosky

2
Vorrei che ci fosse una variante di questi metodi che ha restituito un valore falso da un set di risultati vuoto.
Stephen M. Harris,

25

$("#grid_GridHeader:first") funziona anche.


3
Penso che questo sia il modo migliore per gestire il tuo problema qui. Si legge bene, al contrario di .eq (0)
Dave Gregory,

18

Puoi usare il primo metodo:

$('li').first()

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

btw sono d'accordo con Nick Craver - usa document.getElementById () ...


1
Questo restituisce un array vuoto se non vengono trovati elementi. Fai attenzione a usare nelle istruzioni logiche come []eval true.
Ashley

4

Partendo dal presupposto che ci sia un solo elemento:

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

... sono tutti equivalenti, restituendo il singolo elemento sottostante.

Dal codice sorgente di jQuery, puoi vedere che get(0), sotto le coperte, essenzialmente fa la stessa cosa [0]dell'approccio:

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

Grazie per tutto il resto funziona a parte get () che non sembra ottenere il primo elemento.
Rubans

In realtà posso vedere dalla risposta di Nick Crave perché non funzionerà
Rubans


3

Puoi usare il primo selettore.

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

Restituisce un array con un singolo elemento.
Nitin

-3

Puoi provare in questo modo:
yourArray.shift()

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.