2009-08-19 16 views
99

Ho letto la documentazione di JQuery e mentre molta attenzione è dedicata a ciò che dovresti passare la funzione, non vedo alcuna informazione su ciò che effettivamente restituisce.

In particolare, restituisce sempre un array, anche se viene trovato un solo elemento? Restituisce nulla quando non viene trovato nulla? Dove è documentato?

Capisco che i metodi jquery possano essere applicati al valore restituito, ma cosa succede se voglio semplicemente utilizzare direttamente il valore restituito?

risposta

64

Da Rick Strahl's description:

L'oggetto jQuery: Il set spostato: Selettori restituiscono un oggetto jQuery nota come "Set avvolto", che è una struttura matrice simile che contiene tutti selezionato Elementi DOM. È possibile eseguire iterare sul set avvolto come un array o accedere ai singoli elementi tramite l'indicizzatore ($ (sel) [0] per l'esempio ). Ancora più importante, è possibile applicare le funzioni jQuery a anche a tutti gli elementi selezionati.

di tornare nulla:

lo fa tornare sempre un array? Restituisce nulla?

Si ottiene sempre la stessa cosa, indipendentemente dal fatto che abbia o meno contenuti è la domanda. In genere è possibile controllare questo utilizzando .val() (ad es. $ ('. MyElem'). Val())

+0

Grande, grazie ... questo è molto utile. Non sapevo che un oggetto definito dall'utente potesse allo stesso tempo essere così "array-like" - immagino che sia il genio di jquery. – harpo

+0

Prego, anch'io ho appena modificato e aggiunto il collegamento completo all'articolo di Rick Strahl: è una buona lettura. –

+14

Per la domanda che mi ha condotto qui, vale a dire, come si controlla se è stato trovato qualcosa, sono andato con ** $ (query) .length **, che sembra fare il trucco. – harpo

4

La funzione jQuery (ad esempio "$") restituisce sempre un oggetto jQuery in ogni istanza.

+2

http://en.wikipedia.org/wiki/Begging_the_question – harpo

+0

@harpo: non del tutto; È solo che gli oggetti in questione sono mal denominati. "L'oggetto jQuery", alias '$' vs "un oggetto jQuery", detto anche "set avvolto". –

22

Non restituisce un array, restituisce un oggetto jQuery. L'oggetto jQuery è ciò che contiene tutti i metodi speciali di jQuery.

Non restituisce mai null o un altro tipo. Se viene trovato un elemento, l'oggetto jQuery avrà un solo figlio. Se non vengono trovati elementi, l'oggetto jQuery sarà vuoto.

1

Il fatto che $() restituisca sempre la funzione jQuery consente di concatenare con criterio le chiamate della funzione jQuery.

+0

chiedere! '$()' non restituisce la funzione jQuery, (che è '$' stesso,) ma restituisce un set avvolto, con tutti quei metodi utili su di esso. –

0

Secondo firebug, restituisce una serie di oggetti che corrispondono al tuo selettore. Ma questa matrice è un oggetto jQuery, che ha più metodi di una semplice matrice.

4

Come un altro rispondente ha menzionato, lo sempre restituisce l'oggetto jQuery.

Questo oggetto contiene sempre un array di elementi (anche se è un array vuoto o un array con un solo oggetto).

Se si desidera utilizzare l'oggetto restituito "direttamente", come in, come un elemento semplice, si può fare uno dei seguenti modi:

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

Dal jQuery documentation:

l'oggetto jQuery si comporta proprio come un array; ha una proprietà length e gli elementi nell'oggetto sono accessibili dai loro indici numerici [0] a [length-1]. Nota che un oggetto jQuery non è in realtà un oggetto Array Javascript, quindi non ha tutti i metodi di un vero oggetto Array come join().

0

Jquery selettore MECHNISM

$ (".."), il selettore jQuery, viene utilizzato per selezionare gli elementi corrispondenti.

valore di ritorno

Si restituisce sempre un oggetto jQuery array simili, che ha una proprietà "lunghezza",

metodo Chiamata in oggetto jQuery tornato

Metodi di jQuery potrebbe essere chiamato sull'oggetto e applicare a quegli elementi selezionati,

Accesso originale elemen t per indice

Gli elementi selezionati, sono deposito come proprietà dell'oggetto, il nome proprietà sono numeri di indice partono da 0,
quindi è accessibile da indice, inizia da 0,
dopo ottenere l'elemento originale , puoi trattarlo come se fossi passato a "document.getElementXxx()".

Wrap un elemento originale a un oggetto jQuery

Dopo ottenere l'elemento originale, si può avvolgere ad essere un oggetto jQuery,
chiamando $ (originalEle),
quindi è possibile chiamare jquery metodi sull'oggetto incartato,

Problemi correlati