Jestem nowy w jQuery i zastanawiam się, jaka jest różnica między jQuery get()
a eq()
funkcjami. Mogę źle zrozumieć, co get()
robi funkcja, ale pomyślałem, że to dziwne, że nie mogłem wywołać funkcji w zwracanym elemencie w tym samym wierszu.
//Doesn't work
I.e. $("h2").get(0).fadeIn("slow");
//Works
$("h2").eq(0).fadeIn("slow");
jquery
jquery-selectors
contactmatt
źródło
źródło
Odpowiedzi:
.get()
i.eq()
oba zwracają pojedynczy „element” z tablicy obiektów jQuery, ale zwracają pojedynczy element w różnych formach..eq()
zwraca go jako obiekt jQuery, co oznacza, że element DOM jest opakowany w opakowanie jQuery, co oznacza, że akceptuje funkcje jQuery..get()
zwraca tablicę surowych elementów DOM. Możesz manipulować każdym z nich, uzyskując dostęp do jego atrybutów i wywołując jego funkcje, tak jak w przypadku surowego elementu DOM. Ale traci swoją tożsamość jako obiekt opakowany w jQuery, więc funkcja jQuery taka jak.fadeIn
nie będzie działać.źródło
get()
zwraca element DOM, podczas gdy:eq()
ieq()
zwraca element jQuery. Ponieważ elementy DOM nie mają metodyfadeIn()
, zawodzi .http://api.jquery.com/get/
http://api.jquery.com/eq-selector/
źródło
get(0)
(docs) zwraca pierwszy element DOM w zestawie.eq(0)
(docs) zwraca pierwszy element DOM w zestawie, opakowany w obiekt jQuery.Dlatego
.fadeIn("slow");
nie działa, kiedy robisz.get(0)
. Element DOM nie mafadeIn()
metody, ale obiekt jQuery ma.źródło
Aby skorzystać z innych odpowiedzi:
źródło
eq(i)
pobiera i-ty element z zestawu odbiorcy jakojQuery
obiekt, podczas gdyget(i)
zwraca element na i-tym miejscu jako element DOM.Powód, dla którego to nie działa:
Dzieje się tak, ponieważ
h2
element DOM nie ma metody o nazwiefadeIn
.Zamiast tego powinieneś użyć
eq(0)
tutaj.źródło
Podaję przykład, który wyjaśnia punkty podane przez innych tutaj. rozważ następujący kod
i odpowiedni kod js,
Oto, co zobaczysz
Pierwszy to obiekt DOM, podczas gdy drugi to obiekt opakowany w Jquery, w którym można wywołać metody Jquery
źródło
Metoda jQuery eq () wybiera element HTML o określonym numerze indeksu.
Oto przykład
Źródło: http://www.snoopcode.com/JQuery/jquery-eq-selector
źródło
eq(2)
zwraca trzeciego elementu div?Odpowiedzi powyżej wyjaśniły szczegółowo i poprawnie. Chcę tutaj dodać kilka punktów, które mogą pomóc w korzystaniu z
get()
.Jeśli nie przekażesz argumentu do
.get()
, zwróci on tablicę elementów DOM.Jeśli masz obiekt DOM za pomocą
get()
, tak jakvar s = $("#id").get(0)
możesz zmienić go z powrotem w obiekt jQuery po prostu używając tego,$(s)
Możesz użyć
$obj[i]
alternatywnego sposobu, jeśli nie chcesz go używać$obj.get(i)
, patrz poniżej,źródło