Que renvoie réellement jquery $?

113

J'ai lu la documentation JQuery, et bien que beaucoup d'attention soit consacrée à ce que vous devez transmettre à la fonction, je ne vois aucune information sur ce qu'elle renvoie réellement .

En particulier, renvoie-t-il toujours un tableau, même si un seul élément est trouvé? Renvoie-t-il null lorsque rien n'est trouvé? Où est-ce documenté?

Je comprends que les méthodes jquery peuvent être appliquées à la valeur de retour, mais que faire si je veux simplement utiliser directement la valeur de retour?

harpo
la source

Réponses:

76

D'après la description de Rick Strahl :

L'objet jQuery: l'ensemble enveloppé: les sélecteurs renvoient un objet jQuery appelé «ensemble enveloppé», qui est une structure de type tableau contenant tous les éléments DOM sélectionnés. Vous pouvez parcourir l'ensemble enveloppé comme un tableau ou accéder à des éléments individuels via l'indexeur ($ (sel) [0] par exemple). Plus important encore, vous pouvez également appliquer des fonctions jQuery à tous les éléments sélectionnés.

À propos de ne rien renvoyer:

Renvoie-t-il toujours un tableau? Renvoie-t-il null?

Vous obtenez toujours la même chose en retour, qu'elle ait ou non un contenu est la question. Vous pouvez généralement vérifier cela en utilisant .val () (par exemple $ ('. MyElem'). Val ())

Ian Robinson
la source
1
Super, merci ... c'est très utile. Je ne savais pas qu'un objet défini par l'utilisateur pouvait en même temps être aussi "comme un tableau" - je suppose que c'est le génie de jquery.
harpo
De rien - je viens également de modifier et d'ajouter le lien complet vers l'article de Rick Strahl - c'est une bonne lecture.
Ian Robinson
14
Pour la question qui m'a amené ici, à savoir comment vérifier si quelque chose a été trouvé, je suis allé avec $ (query) .length , ce qui semble faire l'affaire.
harpo
3
qu'est-ce qu'un tableau comme set .... est-ce un tableau ou un objet ou? ... pouvons-nous être précis?
26

Il ne renvoie pas de tableau, il renvoie un objet jQuery. L'objet jQuery est ce qui contient toutes les méthodes jQuery spéciales.

Il ne renvoie jamais null ou un autre type. Si un élément est trouvé, l'objet jQuery n'aura qu'un seul enfant. Si aucun élément n'est trouvé, l'objet jQuery sera vide.

John Millikin
la source
6

La fonction jQuery (c'est-à-dire " $") renvoie toujours un objet jQuery dans chaque instance.

Andrew Hare
la source
4
@harpo: pas du tout; C'est juste que les objets en question sont mal nommés. "L'objet jQuery", alias $vs "un objet jQuery", alias un "ensemble encapsulé".
Sean McMillan le
5

Comme un autre répondant l'a mentionné, il renvoie toujours l'objet jQuery.

Cet objet contient toujours un tableau d'éléments (même s'il s'agit d'un tableau vide ou d'un tableau avec un seul objet).

Si vous souhaitez utiliser l'objet renvoyé "directement", comme dans, en tant qu'élément simple, vous pouvez effectuer l'une des opérations suivantes:

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

À partir de la documentation jQuery :

L'objet jQuery lui-même se comporte un peu comme un tableau; il a une propriété length et les éléments de l'objet sont accessibles par leurs indices numériques [0] à [length-1]. Notez qu'un objet jQuery n'est pas réellement un objet Javascript Array, donc il n'a pas toutes les méthodes d'un véritable objet Array tel que join ().

d512
la source
2

Le fait que $ () retourne toujours la fonction jQuery vous permet d'enchaîner judicieusement les appels de fonction jQuery.

Stefan Kendall
la source
1
demander! $()ne retourne pas la fonction jQuery (qui est $elle - même) mais retourne un ensemble encapsulé, avec toutes ces méthodes utiles.
Sean McMillan le
1

Mécanisme de sélecteur Jquery

$("..") , le sélecteur jquery, est utilisé pour sélectionner les éléments correspondants.

Valeur de retour

Il renvoie toujours un objet jquery de type tableau, qui a une lengthpropriété,

Méthode d'appel sur l'objet jquery retourné

Les méthodes de jquery pourraient être appelées sur l'objet, et s'appliquer à ces éléments sélectionnés,

Accéder à l'élément d'origine par index

Les éléments sélectionnés sont stockés en tant que propriété de l'objet, leur nom de propriété sont des numéros d'index commençant à 0,
donc accessibles par index, à partir de 0,
après avoir obtenu l'élément d'origine, vous pouvez le traiter comme s'il était passé document.getElementXxx().

Enveloppez un élément d'origine dans un objet jquery

Après avoir obtenu l'élément d'origine, vous pouvez l'envelopper pour en faire un objet jquery, en appelant $(originalEle),
puis vous pouvez appeler des méthodes jquery sur l'objet encapsulé.

Eric Wang
la source
0

Selon Firebug, il renvoie un tableau d'objets qui correspondent à votre sélecteur. Mais ce tableau est un objet jQuery, plus de méthodes qu'un simple Array.

eKek0
la source
0

Leur documentation répertorie quelques-uns des appels de base que vous pouvez utiliser avec "$" et ce qu'ils renvoient

jrsconfitto
la source