Jak uzyskać pierwszy element zamiast używać [0] w jQuery?

95

Jestem nowy w jQuery, przepraszam, jeśli to głupie pytanie.

Kiedy go używam, znajduję element za pomocą id, wiem, że zawsze jest jedno dopasowanie i aby uzyskać do niego dostęp, użyłbym indeksu [0]. Czy jest lepszy sposób na zrobienie tego? Np

var gridHeader = $("#grid_GridHeader")[0];
Rubans
źródło

Odpowiedzi:

101

Możesz również użyć, .get(0)ale ... nie powinieneś tego robić z elementem znalezionym przez ID, który zawsze powinien być unikalny. Mam nadzieję, że to tylko przeoczenie w przykładzie ... jeśli tak jest na twojej rzeczywistej stronie, musisz to naprawić, aby twoje identyfikatory były unikalne, i zamiast tego użyj klasy (lub innego atrybutu).

.get()(like [0]) pobiera element DOM, jeśli chcesz użyć obiektu jQuery .eq(0)lub .first()zamiast tego :)

Nick Craver
źródło
17
Poza tym$("#id") /* jQuery object */ != $("#id").get(0) /* DOM Object */
BrunoLM
9
@BrunoLM - Jeśli potrzebujesz elementu DOM, document.getElementById('id')nie twórz obiektu jQuery tylko po to, aby go wyrzucić ... to ogromnie marnotrawstwo, od silnika selektora do opakowania obiektu, to po prostu przesada bez powodu :)
Nick Craver
Nick, zgadzam się, może byłem raczej głupi, używając jquery do wszystkiego.
Rubans,
2
@NickCraver - Dzięki za to. Właśnie zastąpiłem kilka document.getElementById('id')z, $('#id')[0]ale nie podobało mi się [0]. Twój komentarz na temat marnotrawstwa sprawił, że pomyślałem o zdefiniowaniu $0 = function(id){return document.getElementById(id);}i teraz lubię $0('id')bardziej. $('#id')$#('id')
Taka
2
Chciałbym, żeby istniał wariant tych metod, który zwróciłby fałszywą wartość z pustego zestawu wyników.
Stephen M. Harris
27

$("#grid_GridHeader:first") działa również.

Mervyn
źródło
3
Myślę, że to najlepszy sposób rozwiązania problemu tutaj. Czyta się dobrze, w przeciwieństwie do .eq (0)
Dave Gregory
Jest to najlepszy sposób również ze względu na wydajność (np. Gdy masz tabelę z 1000 wierszy, nie ma potrzeby konstruowania obiektu jquery ze wszystkich)
Alex
18

Możesz użyć pierwszej metody:

$('li').first()

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

btw zgadzam się z Nickiem Craverem - użyj document.getElementById () ...

Bennidhamma
źródło
1
Zwraca pustą tablicę, jeśli nie znaleziono żadnych elementów. Uważaj, używając instrukcji logicznych, tak jak []będzie to miało miejsce w przypadku true.
Ashley
4

Przy założeniu, że jest tylko jeden element:

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

... są równoważne, zwracając pojedynczy element bazowy.

Z kodu źródłowego jQuery widać, że get(0)pod okładkami zasadniczo robi to samo, co [0]podejście:

 // Return just the object
 ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
Ken Redler
źródło
Dzięki za to wszystko działa oprócz metody get (), która wydaje się nie pobierać pierwszego elementu.
Rubans
Właściwie widzę z odpowiedzi Nicka Crave'a, dlaczego to nie zadziała
Rubans
3

Możesz użyć pierwszego selektora.

var header = $('.header:first')
Matt
źródło
Zwraca tablicę z jednym elementem.
Nitin
-3

Możesz spróbować tak:
yourArray.shift()

hjijin
źródło