2012-05-08 14 views
7

Sto usando questo codice per riprodurre un file mp3 precaricato.Cosa significano le parentesi [] dopo un selettore di Jquery?

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

shuffle.play(); 

Shuffle è il mio ID. Ho ottenuto il codice dalla rete ma non riesco a capire cosa fa [0] dopo il selettore jQuery. Il suono non suona se lo rimuovo. Che cosa fa?

grazie

+1

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

+0

Grazie a tutte le risposte finora. Credo che dovrei elaborare. Immagino che fosse una specie di varietà. Ma dove andresti a capire che il primo elemento del tag audio è il pulsante play? – Anatoly

+0

Dai un'occhiata alla risposta di NiftyDude. In realtà non è un array in sé, è un oggetto JQuery con una struttura a forma di array che contiene solo 1 elemento (come hai usato il 'Selettore ID '). Aggiungere '[0]' restituisce l'elemento DOM al posto dell'oggetto JQuery, permettendoti di usare il metodo '.play()'. –

risposta

0

L'ennesimo elemento dell'array restituito. Lo stesso di javascript o php e buona parte dei linguaggi di programmazione che supportano gli array.

0

JQuery restituisce un array. [0] prende il primo elemento nell'array.

+0

Tecnicamente, è un oggetto simile a un array jQuery, non un array. Non è un problema se non provi a fare qualcosa come '.shift()' il primo elemento. – Blazemonger

0

$("#shuffle") restituirà un array di elementi, secondo con la query, come [div,span,etc]
$("#shuffle")[n] significa che si sta selezionando la esimo elemento di questa matrice
In questo caso, $("#shuffle")[0] seleziona il primo elemento di questa matrice

0

Le parentesi dopo $ ('# shuffle') ricevono il primo elemento di quel selettore fornito.

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

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

Nell'ambito diretta della sua domanda, $("#shuffle") è un selettore di id, che restituisce un oggetto jQuery (non un array in sè, ma ha una struttura a matrice simile), allora la parte [0] restituisce effettivamente un oggetto nativo DOMElement dell'elemento con ID shuffle anziché l'oggetto jQuery restituito chiamando lo $('#shuffle') (senza lo []).

In sostanza lo stesso di fare document.getElementById('shuffle')

EDIT (come Matt ha sottolineato)

Questo sarà quindi permetterà di fare il vostro .play() chiamata per iniziare il vostro flusso audio.

+0

La migliore risposta qui, stavo per pubblicare qualcosa di simile. Il punto importante da notare qui è che la disattivazione dell'array con '[0]' significa che si ottiene 'DOMElement', non quello jQuery, che consente di eseguire la chiamata' .play() 'per avviare il flusso audio. –

+0

Grazie NiftyDude. questo mi ha aiutato a metterlo insieme. Ho bisogno di ottenere l'elemento DOM per usare play(): http://www.w3schools.com/HTML5/av_met_play.asp – Anatoly

0

Restituisce l'oggetto javascript nativo contenente il primo elemento nel set di elementi corrispondente.

10

jQuery è un oggetto di tipo array che contiene tutti gli elementi corrispondenti. Spesso, jQuery per impostazione predefinita applicare le sue modifiche al primo elemento della collezione:

$("li").css("display"); // display val of first element, not all elements. 

Anche se avrebbe potuto essere trovato molti li elementi, l'oggetto jQuery ci racconta il primo implicitamente.Potremmo esplicitamente istruzioni al fine di farlo utilizzando il metodo $.get:

$("li").get(0); // Returns first DOM element 
$("li")[0]; // Also returns first DOM element 

abbiamo potuto verificare la nodeName per verificare questo:

$("li").get(0).nodeName; // LI 
$("li")[0].nodeName; // LI 

Se guardiamo sotto le coperte, possiamo vedere come $.get() è implementato:

get: function(num) { 
    return num == null 
    ? this.toArray() 
    : (num < 0 
      ? this[ this.length + num ] 
      : this[ num ]); 
} 

da questo possiamo vedere che quando viene fornito alcun argomento, l'intera collezione di elemento viene convertito in un array, e quindi restituito. Quando viene fornito un argomento, ad esempio 2, restituiamo l'elemento come indice 2. Se viene fornito -2, questo viene aggiunto alla lunghezza (supponiamo che la lunghezza sia 5, 5 + (- 2) è 3) e il numero risultante è usato come indice.

Quindi per quanto riguarda il vostro esempio particolare:

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

jQuery è usato per ottenere qualsiasi elemento che ha il valore di id shuffle. Questo restituisce l'oggetto simile a un array jQuery. Ma il tuo metodo play() non esiste sull'oggetto jQuery, esiste sull'oggetto #shuffle. In quanto tale, è necessario ottenere il primo elemento nella raccolta.

È possibile utilizzare $.get(0), tuttavia, come abbiamo appena visto, aggiungeremmo un altro passaggio. Internamente, jQuery eseguirà lo stesso codice che stai eseguendo sopra, [0].

0

suoi mezzi l'ordine cronologico di oggetto da processo sempre utilizzato su array [0], [1], [2] ... è possibile controllare Here

Problemi correlati