O que jquery $ realmente retorna?

113

Eu li a documentação do JQuery e, embora muita atenção seja dedicada ao que você deve passar a função, não vejo nenhuma informação sobre o que ela realmente retorna .

Em particular, ele sempre retorna uma matriz, mesmo se apenas um elemento for encontrado? Ele retorna nulo quando nada é encontrado? Onde isso está documentado?

Eu entendo que os métodos jquery podem ser aplicados ao valor de retorno, mas e se eu quiser apenas usar o valor de retorno diretamente?

arpão
fonte

Respostas:

76

Da descrição de Rick Strahl :

O objeto jQuery: The Wrapped Set: Selectors retorna um objeto jQuery conhecido como "conjunto wrap", que é uma estrutura semelhante a um array que contém todos os elementos DOM selecionados. Você pode iterar sobre o conjunto empacotado como uma matriz ou acessar elementos individuais por meio do indexador ($ (sel) [0] por exemplo). Mais importante, você também pode aplicar funções jQuery a todos os elementos selecionados.

Sobre não devolver nada:

Ele sempre retorna um array? Ele retorna nulo?

Você sempre recebe a mesma coisa de volta, tenha ou não algum conteúdo, é a questão. Normalmente, você pode verificar isso usando .val () (por exemplo, $ ('. MyElem'). Val ())

Ian Robinson
fonte
1
Ótimo, obrigado ... isso é muito útil. Eu não sabia que um objeto definido pelo usuário poderia ser ao mesmo tempo tão "semelhante a um array" - acho que esse é o gênio do jquery.
Harpo
De nada - eu também acabei de editar e adicionar o link completo para o artigo de Rick Strahl - é uma boa leitura.
Ian Robinson
14
Para a pergunta que me trouxe aqui, a saber, como você verifica se algo foi encontrado, optei por $ (query) .length , o que parece funcionar.
Harpo de
3
o que é um array como set .... é um array ou um objeto ou? ... podemos ser precisos?
26

Ele não retorna um array, ele retorna um objeto jQuery. O objeto jQuery é o que contém todos os métodos jQuery especiais.

Ele nunca retorna nulo ou outro tipo. Se um elemento for encontrado, o objeto jQuery terá apenas um filho. Se nenhum elemento for encontrado, o objeto jQuery estará vazio.

John Millikin
fonte
6

A função jQuery (ou seja, " $") sempre retorna um objeto jQuery em cada instância.

Andrew Hare
fonte
4
@harpo: de forma alguma; É que os objetos em questão são mal nomeados. "O objeto jQuery", também conhecido como $"um objeto jQuery", também conhecido como "conjunto embrulhado".
Sean McMillan
5

Como outro respondente mencionou, ele sempre retorna o objeto jQuery.

Este objeto sempre contém uma matriz de elementos (mesmo se for uma matriz vazia ou uma matriz com apenas um objeto).

Se desejar usar o objeto retornado "diretamente", como em, como um elemento simples, você pode fazer o seguinte:

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

Da documentação do jQuery :

O próprio objeto jQuery se comporta como um array; ele possui uma propriedade de comprimento e os elementos no objeto podem ser acessados ​​por seus índices numéricos [0] a [comprimento-1]. Observe que um objeto jQuery não é realmente um objeto Array Javascript, portanto, não possui todos os métodos de um objeto Array verdadeiro, como join ().

d512
fonte
2

O fato de que $ () sempre retorna a função jQuery permite encadear chamadas de função jQuery criteriosamente.

Stefan Kendall
fonte
1
pergunte! $()não retorna a função jQuery, (que é $ela mesma), mas retorna um conjunto encapsulado, com todos aqueles métodos úteis nele.
Sean McMillan
1

Mecanismo seletor Jquery

$("..") , o seletor jquery, é usado para selecionar os elementos correspondentes.

Valor de retorno

Ele sempre retorna um objeto jquery semelhante a um array, que tem uma lengthpropriedade,

Método de chamada no objeto jquery retornado

Métodos de jquery podem ser chamados no objeto e se aplicam a esses elementos selecionados,

Acesse o elemento original por índice

Os elementos selecionados, são armazenados como propriedade do objeto, seus nomes de propriedade são números de índice iniciados em 0,
portanto , podem ser acessados ​​por índice, iniciam em 0,
após obter o elemento original, pode-se tratá-lo como se fosse obtido document.getElementXxx().

Envolva um elemento original em um objeto jquery

Depois de obter o elemento original, você pode envolvê-lo para ser um objeto jquery, chamando $(originalEle),
então você pode chamar métodos jquery no objeto embalado.

Eric Wang
fonte
0

De acordo com o firebug, ele retorna uma matriz de objetos que correspondem ao seu seletor. Mas esse array é um objeto jQuery, que tem mais métodos do que um simples Array.

eKek0
fonte