2011-08-08 19 views
12

¿jQuery siempre devuelve una matriz cuando se selecciona un elemento (por supuesto, si al menos existe un elemento)? Ejemplo:¿jQuery siempre devuelve array?

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

¿Qué ocurre si el selector es una identificación? ¿Qué sucede si el selector es un elemento pero solo tiene una aparición?

Respuesta

12

La función jQuery siempre devuelve un objeto jQuery (que se basa en una matriz), incluso si no hay elementos que coincidan con el selector.

De esta manera, siempre puede llamar a un método que se supone que afecta a los elementos encontrados, incluso si no hay elementos que coincidan. Si el objeto jQuery no contiene elementos, simplemente no hará nada.

Si necesita saber si un objeto jQuery contiene algún elemento, puede usar la propiedad length.

+0

En mi opinión, su segunda declaración no es una buena explicación, porque este no es el motivo por el que jQuery devuelve una matriz. Es porque $() encuentra elementos que coinciden con un selector dado, por lo que no puede esperar que el elemento tenga alguna identificación, pero un resultado que contenga el elemento que tenga alguna identificación. –

+0

@ Matías Fidemraizer: El segundo párrafo no es una explicación de por qué los métodos devuelven una matriz, es una explicación de cómo puede usar eso para su ventaja. Me temo que no entiendo a qué te refieres con la explicación que ofreces. – Guffa

+1

Pero cuando hago '$ ('td') [0] .html ('hi')', me da una excepción, dice que el índice no tiene el método '.html', es decir, los elementos en la matriz devueltos por jQuery no es parte del objeto jQuery. ¿Me equivoco? – dpp

1

Porque $([selector]) es como un atajo de $.find([selector]) que es una búsqueda de elementos.

Todo lo que se ejecute con dichas funciones jQuery puede devolver uno o más resultados, ya que está buscando en lugar de "seleccionar un resultado".

Cuestiones relacionadas