Was gibt jquery $ tatsächlich zurück?

113

Ich habe die JQuery-Dokumentation gelesen, und obwohl viel Aufmerksamkeit darauf gerichtet ist, was Sie an der Funktion übergeben sollten, sehe ich keine Informationen darüber, was sie tatsächlich zurückgibt .

Gibt es insbesondere immer ein Array zurück, auch wenn nur ein Element gefunden wird? Gibt es null zurück, wenn nichts gefunden wird? Wo ist das dokumentiert?

Ich verstehe, dass jquery-Methoden auf den Rückgabewert angewendet werden können, aber was ist, wenn ich den Rückgabewert nur direkt verwenden möchte?

Harpo
quelle

Antworten:

76

Aus der Beschreibung von Rick Strahl :

Das jQuery-Objekt: Die umschlossene Menge: Selektoren geben ein jQuery-Objekt zurück, das als "umschlossene Menge" bezeichnet wird. Hierbei handelt es sich um eine Array-ähnliche Struktur, die alle ausgewählten DOM-Elemente enthält. Sie können die umschlossene Menge wie ein Array durchlaufen oder über den Indexer auf einzelne Elemente zugreifen (z. B. $ (sel) [0]). Noch wichtiger ist, dass Sie jQuery-Funktionen auch auf alle ausgewählten Elemente anwenden können.

Über die Rückgabe von nichts:

Gibt es immer ein Array zurück? Gibt es null zurück?

Sie bekommen immer das Gleiche zurück, ob es irgendwelche Inhalte hat oder nicht, ist die Frage. Normalerweise können Sie dies mit .val () überprüfen (z. B. $ ('. MyElem'). Val ())

Ian Robinson
quelle
1
Großartig, danke ... das ist sehr hilfreich. Ich wusste nicht, dass ein benutzerdefiniertes Objekt gleichzeitig so "array-like" sein kann - ich denke, das ist das Genie von jquery.
Harpo
Gern geschehen - ich habe auch gerade den vollständigen Link zu Rick Strahls Artikel bearbeitet und hinzugefügt - es ist eine gute Lektüre.
Ian Robinson
14
Für die Frage, die mich hierher geführt hat, nämlich wie Sie überprüfen, ob etwas gefunden wurde, habe ich $ (query) .length gewählt , was den Trick zu tun scheint.
Harpo
3
Wie ist ein Array wie set ... ist es ein Array oder ein Objekt oder? ... können wir präzise sein?
26

Es wird kein Array zurückgegeben, sondern ein jQuery-Objekt. Das jQuery-Objekt enthält alle speziellen jQuery-Methoden.

Es wird niemals null oder ein anderer Typ zurückgegeben. Wenn ein Element gefunden wird, hat das jQuery-Objekt nur ein untergeordnetes Element. Wenn keine Elemente gefunden werden, ist das jQuery-Objekt leer.

John Millikin
quelle
6

Die jQuery-Funktion (dh " $") gibt in jeder Instanz immer ein jQuery-Objekt zurück.

Andrew Hare
quelle
4
@harpo: überhaupt nicht; Es ist nur so, dass die fraglichen Objekte schlecht benannt sind. "Das jQuery-Objekt", auch bekannt als $"ein jQuery-Objekt", auch bekannt als "verpacktes Set".
Sean McMillan
5

Wie bereits von einem anderen Antwortenden erwähnt, wird immer das jQuery-Objekt zurückgegeben.

Dieses Objekt enthält immer ein Array von Elementen (auch wenn es sich um ein leeres Array oder ein Array mit nur einem Objekt handelt).

Wenn Sie das zurückgegebene Objekt "direkt" wie in als einfaches Element verwenden möchten, können Sie einen der folgenden Schritte ausführen:

$('selector')[0] // element
$('selector').get(0) // element
$('selector').length // number of elements in the array
TM.
quelle
3

Aus der jQuery-Dokumentation :

Das jQuery-Objekt selbst verhält sich ähnlich wie ein Array. Es hat eine Längeneigenschaft und auf die Elemente im Objekt kann über ihre numerischen Indizes [0] bis [Länge-1] zugegriffen werden. Beachten Sie, dass ein jQuery-Objekt eigentlich kein Javascript-Array-Objekt ist und daher nicht alle Methoden eines echten Array-Objekts wie join () enthält.

d512
quelle
2

Die Tatsache, dass $ () immer die jQuery-Funktion zurückgibt, ermöglicht es Ihnen, jQuery-Funktionsaufrufe mit Bedacht zu verketten.

Stefan Kendall
quelle
1
Fragen! $()gibt nicht die jQuery-Funktion (die $selbst ist) zurück, sondern eine umschlossene Menge mit all diesen hilfreichen Methoden.
Sean McMillan
1

Jquery Selector Mechnismus

$("..") Mit dem jquery-Selektor werden übereinstimmende Elemente ausgewählt.

Rückgabewert

Es wird immer ein Array-ähnliches JQuery-Objekt zurückgegeben, das eine lengthEigenschaft hat.

Aufrufmethode für zurückgegebenes jquery-Objekt

Methoden der Abfrage können für das Objekt aufgerufen werden und auf diese ausgewählten Elemente angewendet werden.

Greifen Sie über den Index auf das ursprüngliche Element zu

Die ausgewählten Elemente werden als Eigenschaft des Objekts gespeichert. Ihr Eigenschaftsname sind Indexnummern, die bei 0 beginnen. Sie können
also über den Index ab 0 beginnen.
Nachdem Sie das ursprüngliche Element erhalten haben, können Sie es so behandeln, als ob Sie damit auskommen document.getElementXxx().

Wickeln Sie ein Originalelement in ein Abfrageobjekt

Nach erhalten das ursprüngliche Element, können Sie es wickeln ein jQuery - Objekt zu sein, durch den Aufruf $(originalEle),
dann können Sie jquery Methoden auf dem umwickelten Objekt aufrufen.

Eric Wang
quelle
0

Laut Firebug wird ein Array von Objekten zurückgegeben, die mit Ihrer Auswahl übereinstimmen. Aber dieses Array ist ein jQuery-Objekt, das mehr Methoden als ein einfaches Array enthält.

eKek0
quelle
0

In der Dokumentation sind einige der wichtigsten Aufrufe aufgeführt, die Sie mit "$" verwenden können, und was sie zurückgeben

jrsconfitto
quelle