2011-09-22 7 views
15

Cosa restituisce il metodo jQuery .find()? un oggetto O un elenco di matrice di oggetti?Come convertire il risultato della funzione jQuery .find() in un array?

Se restituisce un oggetto che contiene tutti gli elementi corrispondenti. Come convertire questo oggetto in un array?

Se restituisce una matrice di elementi, perché $(xml).find("DATE").sort(mySortFunc); non funziona, sembra che jquery .find() restituisca un oggetto che non può applicare il metodo javascript sort() che dovrebbe essere applicato all'array.

In genere, ho bisogno di ordinare gli oggetti trovati da $(xml).find("DATE"), ma quando uso la funzione di ordinamento, si genera un errore che l'oggetto non può essere risolto.

+0

http://api.jquery.com/jQuery.makeArray/? – markus

risposta

22

La maggior parte dei metodi jQuery restituisce un oggetto jQuery, a cui si accede come è un array (ad esempio esso ha un attributo .length, gli elementi possono essere accessibili usando la notazione parentesi quadra ([0]), e supporta alcuni metodi array (slice())).

jQuery ha un metodo chiamato toArray() che può essere utilizzato per convertire l'oggetto jQuery in un array reale.

È inoltre possibile utilizzare get() senza argomenti per ottenere lo stesso effetto (e risparmiare alcuni tasti).

In futuro, potete verifica la jQuery API, e il tipo di ritorno per tutti i metodi jQuery è elencato nella relativa documentazione (ad esempio per find(), il tipo di ritorno è "jQuery")

4

Se si chiama .get() su un jQuery object senza un parametro, restituirà una serie regolare di elementi DOM.

1

jQuery agisce già come un array e quindi è possibile applicarvi funzionalità come array.

tenta di modificare

$(xml).find("DATE").sort(mySortFunc); 

con

Array.prototype.sort.apply($(xml).find("DATE"), mySortFunc); 

e si dovrebbe ottenere quello che ti serve

Problemi correlati