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]
.
http://stackoverflow.com/questions/1302428/what-does-jquery-actual-return – Jack
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
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()'. –