2011-08-08 35 views
12

jQuery restituisce sempre array quando si seleziona l'elemento (ovviamente se esiste almeno un elemento)? Esempio:jQuery restituisce sempre array?

$('#Myelement') 
$('div') 
$('tbody') 

Cosa succede se il selettore è un ID? Cosa succede se il selettore è un elemento ma ha una sola occorrenza?

risposta

12

La funzione jQuery restituisce sempre un oggetto jQuery (che si basa su un array), anche se non ci sono elementi che corrispondono al selettore.

In questo modo è sempre possibile chiamare un metodo che dovrebbe influire sugli elementi trovati, anche se non ci sono elementi corrispondenti. Se l'oggetto jQuery non contiene elementi, semplicemente non farà nulla.

Se è necessario sapere se un oggetto jQuery contiene elementi, è possibile utilizzare la proprietà length.

+0

Secondo me, la tua seconda affermazione non è una buona spiegazione, perché non è questo il motivo per cui jQuery restituisce un array. È perché $() trova gli elementi che corrispondono a un determinato selettore, quindi non puoi aspettarti che l'elemento abbia un id, ma un risultato che contiene l'elemento che ha un id. –

+0

@ Matías Fidemraizer: il secondo paragrafo non è una spiegazione del perché i metodi restituiscono un array, è una spiegazione di come è possibile utilizzarlo a proprio vantaggio. Ho paura di non capire cosa intendi con la spiegazione che offri. – Guffa

+1

Ma quando faccio '$ ('td') [0] .html ('hi')', mi dà un'eccezione, dice che l'indice non ha il metodo '.html', cioè gli elementi dell'array restituiti da jQuery non fa parte dell'oggetto jQuery. Ho sbagliato? – dpp

1

Perché $([selector]) è come una scorciatoia di $.find([selector]) che è una ricerca di elementi.

Tutto ciò che viene eseguito con tali funzioni jQuery può restituire uno o più risultati, poiché si sta cercando piuttosto che "selezionare un risultato".

Problemi correlati