¿Qué devuelve realmente jquery $?

113

He leído la documentación de JQuery y, aunque se presta mucha atención a lo que debe pasar a la función, no veo ninguna información sobre lo que realmente devuelve .

En particular, ¿siempre devuelve una matriz, incluso si solo se encuentra un elemento? ¿Devuelve nulo cuando no se encuentra nada? ¿Dónde está documentado esto?

Entiendo que los métodos jquery se pueden aplicar al valor de retorno, pero ¿qué pasa si solo quiero usar el valor de retorno directamente?

arpón
fuente

Respuestas:

76

De la descripción de Rick Strahl :

El objeto jQuery: el conjunto envuelto: los selectores devuelven un objeto jQuery conocido como "conjunto envuelto", que es una estructura similar a una matriz que contiene todos los elementos DOM seleccionados. Puede iterar sobre el conjunto envuelto como una matriz o acceder a elementos individuales a través del indexador ($ (sel) [0] por ejemplo). Más importante aún, también puede aplicar funciones de jQuery contra todos los elementos seleccionados.

Acerca de no devolver nada:

¿Siempre devuelve una matriz? ¿Devuelve nulo?

Siempre obtienes lo mismo, tenga o no contenido es la cuestión. Por lo general, puede verificar esto usando .val () (por ejemplo, $ ('. MyElem'). Val ())

Ian Robinson
fuente
1
Genial, gracias ... esto es muy útil. No sabía que un objeto definido por el usuario podía ser al mismo tiempo tan "similar a una matriz", supongo que ese es el genio de jquery.
harpo
De nada, también acabo de editar y agregar el enlace completo al artículo de Rick Strahl, es una buena lectura.
Ian Robinson
14
Para la pregunta que me llevó aquí, a saber, cómo verifica si se encontró algo, fui con $ (query) .length , que parece funcionar.
harpo
3
¿Qué es una matriz como conjunto ... es una matriz o un objeto o? ... ¿podemos ser precisos?
26

No devuelve una matriz, devuelve un objeto jQuery. El objeto jQuery es el que contiene todos los métodos especiales de jQuery.

Nunca devuelve nulo u otro tipo. Si se encuentra un elemento, el objeto jQuery tendrá solo un hijo. Si no se encuentran elementos, el objeto jQuery estará vacío.

John Millikin
fuente
6

La función jQuery (es decir, " $") siempre devuelve un objeto jQuery en cada instancia.

Andrew Hare
fuente
4
@harpo: para nada; Es solo que los objetos en cuestión están mal nombrados. "El objeto jQuery", también conocido como $"un objeto jQuery", también conocido como un "conjunto envuelto".
Sean McMillan
5

Como mencionó otro respondedor, siempre devuelve el objeto jQuery.

Este objeto siempre contiene una matriz de elementos (incluso si es una matriz vacía o una matriz con un solo objeto).

Si desea utilizar el objeto devuelto "directamente", como en, como un elemento simple, puede realizar una de las siguientes acciones:

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

De la documentación de jQuery :

El propio objeto jQuery se comporta como una matriz; tiene una propiedad de longitud y se puede acceder a los elementos del objeto mediante sus índices numéricos [0] a [longitud-1]. Tenga en cuenta que un objeto jQuery no es en realidad un objeto Array Javascript, por lo que no tiene todos los métodos de un objeto Array verdadero, como join ().

d512
fuente
2

El hecho de que $ () siempre devuelva la función jQuery le permite encadenar las llamadas a la función jQuery con prudencia.

Stefan Kendall
fuente
1
¡pedir! $()no devuelve la función jQuery, (que es en $sí misma), pero devuelve un conjunto envuelto, con todos esos métodos útiles.
Sean McMillan
1

Mecanismo selector de jquery

$("..") , el selector de jquery, se usa para seleccionar elementos coincidentes.

Valor devuelto

Siempre devuelve un objeto jquery similar a una matriz, que tiene una lengthpropiedad,

Método de llamada en el objeto jquery devuelto

Los métodos de jquery podrían invocarse en el objeto y aplicarse a esos elementos seleccionados,

Acceder al elemento original por índice

Los elementos seleccionados, se almacenan como propiedad del objeto, su nombre de propiedad son números de índice que comienzan desde 0, por
lo que se puede acceder por índice, comienzan desde 0,
después de obtener el elemento original, puede tratarlo como si se las arreglara document.getElementXxx().

Envuelve un elemento original en un objeto jquery

Después de obtener el elemento original, puede envolverlo para que sea un objeto jquery, llamando $(originalEle),
luego puede llamar a los métodos jquery en el objeto envuelto.

Eric Wang
fuente
0

Según firebug, devuelve una matriz de objetos que coinciden con su selector. Pero esta matriz es un objeto jQuery, más métodos que una simple matriz.

eKek0
fuente
0

Su documentación enumera algunas de las llamadas principales que puede usar con "$" y lo que devuelven.

jrsconfitto
fuente