Co właściwie zwraca jquery $?

113

Przeczytałem dokumentację JQuery i chociaż dużo uwagi poświęca się temu, czemu należy przekazać tę funkcję, nie widzę żadnych informacji o tym, co tak naprawdę zwraca .

W szczególności, czy zawsze zwraca tablicę, nawet jeśli zostanie znaleziony tylko jeden element? Czy zwraca wartość null, gdy nic nie zostanie znalezione? Gdzie to jest udokumentowane?

Rozumiem, że metody jquery można zastosować do wartości zwracanej, ale co zrobić, jeśli chcę bezpośrednio użyć wartości zwracanej?

harpo
źródło

Odpowiedzi:

76

Z opisu Ricka Strahla :

Obiekt jQuery: zestaw opakowany: selektory zwracają obiekt jQuery znany jako „zestaw opakowany”, który jest strukturą przypominającą tablicę zawierającą wszystkie wybrane elementy DOM. Możesz iterować po opakowanym zestawie, takim jak tablica, lub uzyskać dostęp do poszczególnych elementów za pomocą indeksatora (na przykład $ (sel) [0]). Co ważniejsze, możesz również zastosować funkcje jQuery do wszystkich wybranych elementów.

O zwracaniu niczego:

Czy zawsze zwraca tablicę? Czy zwraca wartość null?

Zawsze otrzymujesz to samo, pytanie, czy ma jakąś treść, czy nie. Zwykle możesz to sprawdzić za pomocą .val () (np. $ ('. MyElem'). Val ())

Ian Robinson
źródło
1
Świetnie, dzięki ... to jest bardzo pomocne. Nie wiedziałem, że obiekt zdefiniowany przez użytkownika może jednocześnie być tak „podobny do tablicy” - to chyba jest geniusz jquery.
harpo
Nie ma za co - właśnie zredagowałem i dodałem pełny link do artykułu Ricka Strahla - to dobra lektura.
Ian Robinson
14
Na pytanie, które mnie tu doprowadziło, a mianowicie, jak sprawdzić, czy coś zostało znalezione, wybrałem $ (query) .length , co wydaje się załatwiać sprawę .
harpo
3
co to jest tablica taka jak set .... czy to tablica czy obiekt czy? ... czy możemy być precyzyjni?
26

Nie zwraca tablicy, zwraca obiekt jQuery. Obiekt jQuery zawiera wszystkie specjalne metody jQuery.

Nigdy nie zwraca null ani innego typu. Jeśli zostanie znaleziony jeden element, obiekt jQuery będzie miał tylko jedno dziecko. Jeśli nie zostaną znalezione żadne elementy, obiekt jQuery będzie pusty.

John Millikin
źródło
6

Funkcja jQuery (tj. „ $”) Zawsze zwraca obiekt jQuery w każdym wystąpieniu.

Andrew Hare
źródło
4
@harpo: wcale; Chodzi o to, że przedmiotowe obiekty są źle nazwane. „Obiekt jQuery”, inaczej $„obiekt jQuery”, czyli „opakowany zestaw”.
Sean McMillan
5

Jak wspomniał inny respondent, zawsze zwraca obiekt jQuery.

Ten obiekt zawsze zawiera tablicę elementów (nawet jeśli jest to pusta tablica lub tablica zawierająca tylko jeden obiekt).

Jeśli chcesz użyć zwróconego obiektu „bezpośrednio”, np. Jako zwykłego elementu, możesz wykonać jedną z następujących czynności:

$('selector')[0] // element
$('selector').get(0) // element
$('selector').length // number of elements in the array
TM.
źródło
3

Z dokumentacji jQuery :

Sam obiekt jQuery zachowuje się podobnie jak tablica; ma właściwość length, a dostęp do elementów obiektu można uzyskać za pomocą ich indeksów numerycznych od [0] do [length-1]. Zauważ, że obiekt jQuery nie jest w rzeczywistości obiektem JavaScript Array, więc nie ma wszystkich metod prawdziwego obiektu Array, takiego jak join ().

d512
źródło
2

Fakt, że $ () zawsze zwraca funkcję jQuery, umożliwia rozsądne łączenie wywołań funkcji jQuery.

Stefan Kendall
źródło
1
zapytać! $()nie zwraca funkcji jQuery (która jest $sobą), ale zwraca opakowany zestaw ze wszystkimi pomocnymi metodami.
Sean McMillan
1

Mechanizm selektora jquery

$("..") , selektor jquery, służy do wybierania dopasowanych elementów.

Wartość zwracana

Zawsze zwraca obiekt jquery podobny do tablicy, który ma lengthwłaściwość

Call metody na zwróconym obiekcie jquery

Na obiekcie można wywołać metody jquery i zastosować je do wybranych elementów,

Uzyskaj dostęp do oryginalnego elementu według indeksu

Wybrane elementy są przechowywane jako własność obiektu, ich nazwa własności to numery indeksowe zaczynające się od 0,
więc można się do nich dostać za pomocą indeksu, zaczynając od 0,
po pobraniu oryginalnego elementu można go traktować tak, jakby się dało document.getElementXxx().

Zawiń oryginalny element w obiekt jquery

Po uzyskaniu oryginalnego elementu można go opakować w obiekt jquery, wywołując $(originalEle),
a następnie wywołując metody jquery na opakowanym obiekcie.

Eric Wang
źródło
0

Według firebuga zwraca tablicę obiektów, które pasują do twojego selektora. Ale ta tablica jest obiektem jQuery, który zawiera więcej metod niż zwykła tablica.

eKek0
źródło
0

Ich dokumentacja wymienia kilka podstawowych wywołań, których możesz użyć z "$", i jakie one zwracają

jrsconfitto
źródło