jQuery es un objeto similar a una matriz que contiene todos sus elementos coincidentes. Muchas veces, jQuery serán por defecto aplicar sus cambios al primer elemento de la colección:
$("li").css("display"); // display val of first element, not all elements.
A pesar de que se podrían haber encontrado muchos li
elementos, el objeto jQuery nos habla de la primera forma implícita.Podríamos instruir explícitamente a hacerlo a través de la $.get
método:
$("li").get(0); // Returns first DOM element
$("li")[0]; // Also returns first DOM element
hemos podido comprobar la nodeName
para verificar esto:
$("li").get(0).nodeName; // LI
$("li")[0].nodeName; // LI
Si miramos debajo de las sábanas, podemos ver cómo $.get()
es implementado:
get: function(num) {
return num == null
? this.toArray()
: (num < 0
? this[ this.length + num ]
: this[ num ]);
}
De esto podemos ver que cuando no se proporciona ningún argumento, toda la colección de elementos se convierte en una matriz, y luego regresó. Cuando se proporciona un argumento, por ejemplo 2
, devolvemos el elemento como índice 2. Si se proporciona -2
, esto se agrega a la longitud (supongamos que la longitud es 5, 5 + (- 2) es 3) y el número resultante es utilizado como el índice.
Así, con respecto a su ejemplo particular:
var shuffle = $("#shuffle")[0];
shuffle.play();
jQuery se utiliza para obtener cualquier elemento que tiene el valor de ID de shuffle
. Esto devuelve el objeto similar a una matriz jQuery. Pero su método play()
no existe en el objeto jQuery, existe en el objeto #shuffle
. Como tal, necesitas obtener el primer elemento de la colección.
Puede usar $.get(0)
, sin embargo, como acabamos de ver, esto solo añadiría un paso más. Internamente, jQuery llevaría a cabo el mismo código que está realizando arriba, [0]
.
http://stackoverflow.com/questions/1302428/what-does-jquery-actually-return – Jack
Gracias a todas las respuestas hasta el momento. Creo que debería elaborar. Me imagino que era una variedad de tipos. Pero, ¿dónde irías para descubrir que el primer elemento de la etiqueta de audio es el botón Reproducir? – Anatoly
Echa un vistazo a la respuesta de NiftyDude. En realidad, no es una matriz per se, es un objeto JQuery con una estructura similar a un array que contiene solo 1 elemento (como usaste el 'ID Selector'). Al agregar '[0]' se devuelve el elemento DOM en lugar del objeto JQuery, lo que le permite utilizar el método '.play()'. –