2012-05-08 25 views
7

Estoy usando este código para reproducir un archivo mp3 precargado.¿Qué significan los corchetes [] después de un selector de Jquery?

var shuffle = $("#shuffle")[0]; 

shuffle.play(); 

Shuffle is my id. Saqué el código de la red, pero NO PUEDO averiguar qué [0] después del selector de jquery. El sonido no se reproduce si lo elimino. ¿Qué hace?

gracias

+1

http://stackoverflow.com/questions/1302428/what-does-jquery-actually-return – Jack

+0

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

+0

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()'. –

Respuesta

0

El enésimo elemento de la matriz devuelta. Lo mismo que en javascript o php regulares y una buena parte de los lenguajes de programación que admiten matrices.

0

JQuery devuelve una matriz. [0] toma el primer elemento de la matriz.

+0

Técnicamente, es un objeto similar a una matriz jQuery, no una matriz. No es un problema a menos que intente hacer algo como '.shift()' el primer elemento. – Blazemonger

0

$("#shuffle") devolverá una matriz de elementos, de acuerdo con su consulta, como [div,span,etc]
$("#shuffle")[n] significa que está seleccionando el enésimo elemento de esta matriz
En este caso, $("#shuffle")[0] selecciona el primer elemento de esta matriz

0

Los paréntesis después de $ ('# shuffle') obtienen el primer elemento de ese selector proporcionado.

$('div.test')[0]; 

<div class="test"></div> <-- this one would get returned 
<div class="test"></div> 
<div class="test"></div> 
1

En el contexto directa de su pregunta, $("#shuffle") es un selector de ID, que devuelve un objeto jQuery (no una matriz per se, pero tiene una estructura de tipo array), entonces la parte [0] está devolviendo un objeto nativo DOMElement del elemento con id shuffle en lugar del objeto jQuery devuelto llamando al $('#shuffle') (sin el []).

Esencialmente lo mismo que hacer document.getElementById('shuffle')

EDITAR (como Matt señaló)

esto, entonces le permitirá hacer su .play() llamada para iniciar su flujo de audio.

+0

La mejor respuesta aquí, estaba a punto de publicar algo similar. El punto importante a tener en cuenta aquí es que desenroscar la matriz con '[0]' significa que obtienes el 'DOMElement', no el jQuery, que te permite hacer tu llamada' .play() 'para iniciar tu transmisión de audio. –

+0

Gracias NiftyDude. eso me ayudó a armarlo. Necesito que el elemento DOM use play(): http://www.w3schools.com/HTML5/av_met_play.asp – Anatoly

0

Devuelve el objeto JavaScript nativo que contiene el primer elemento en el conjunto combinado de elementos.

10

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].

0

sus medios el orden cronológico de objeto que se utiliza en el proceso siempre array [0], [1], [2] ... se puede comprobar Here

Cuestiones relacionadas