2011-09-22 10 views
15

¿Qué devuelve el método jQuery .find()? un objeto O una lista de matriz de objetos?¿Cómo convertir el resultado de la función jQuery .find() a una matriz?

Si devuelve un objeto que contiene todos los elementos coincidentes. ¿Cómo convertir este objeto a una matriz?

Si devuelve una matriz de elementos, por qué $(xml).find("DATE").sort(mySortFunc); no funciona, parece que el jquery .find() devuelve un objeto que no puede aplicar el método javascript sort() que se supone debe aplicarse en la matriz.

En general, tengo que ordenar los objetos encontrados por $(xml).find("DATE"), pero cuando uso la función de ordenamiento, se produce el error de que el objeto no se puede resolver.

+0

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

Respuesta

22

La mayoría de los métodos de jQuery devuelve un objeto jQuery, que se puede acceder como que es una matriz (por ejemplo, que tiene un atributo .length, los elementos pueden ser accedidas usando la notación de corchetes ([0]), y es compatible con algunos métodos de matriz (slice())).

jQuery tiene un método llamado toArray() que se puede utilizar para convertir el objeto jQuery en una matriz real.

También puede usar get() sin argumentos para lograr el mismo efecto (y le ahorrará unas pocas pulsaciones de teclas).

En el futuro, puede obtenerlos el jQuery API, y el tipo de retorno para todos los métodos de jQuery aparece en la documentación pertinente (por ejemplo find(), el tipo de retorno es "jQuery")

4

Si llama .get() en una Objeto jQuery sin un parámetro, devolverá una matriz regular de elementos DOM.

1

jQuery ya actúa como una matriz y, por lo tanto, puede aplicarle una funcionalidad tipo array.

intenta cambiar

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

con

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

y usted debe obtener lo que necesita

Cuestiones relacionadas