2010-04-13 12 views
5

Mi sono imbattuto nel seguente codice jQuery ma non sono riuscito a capirlo. Cosa significa il seguente codice, in particolare la parte "$ ([])" nell'ultima riga?

var instrument = $("#instrument"), 
    quantity = $("#quantity"), 
    orderType = $("#orderType"), 
    price = $("#price"), 
    validityDate = $("#validityDate"), 
    allFields = $([]).add(instrument).add(quantity).add(orderType).add(price).add(validityDate) 

risposta

10

sembra è definire un array, quindi add() ing elementi DOM ad esso. Dal manuale:

Dato un oggetto jQuery che rappresenta un insieme di elementi DOM, il .add() metodo costruisce un nuovo oggetto jQuery dall'unione di questi elementi e quelli passato nel metodo . L'argomento per .add() può essere più o meno qualsiasi cosa che $() accetta, compresa un'espressione selettore jQuery , riferimenti a elementi DOM o uno snippet HTML.

[] è un array javascript vuoto. Come frunsi notes, questo non è l'uso corretto, e la definizione [] non è richiesta per creare un insieme vuoto di elementi, in 1.4 $() farà per te.

7

Crea un set jQuery vuoto. Questo tipo di utilizzo è sbagliato, sebbene possa funzionare. Il [] è superfluo.

Corretto sarebbe solo $().

Tornando un insieme vuoto

Come di jQuery 1.4, chiamando il metodo jQuery() senza argomenti restituisce un set di jQuery vuoto. Nelle versioni precedenti di jQuery, ciò restituiva un set contenente il nodo del documento.

http://api.jquery.com/jQuery/

2

che creerebbe un oggetto vuoto jQuery - cioè con una collezione di 0 nodi DOM riferimento.

Molto spesso, è possibile trovare la funzione jQuery $ applicata a un selettore CSS, a uno o più nodi dal DOM. In questo caso particolare, viene utilizzato l'ultimo di questi tre "overload", per costruire un oggetto jQuery vuoto da una matrice vuota, a cui vengono quindi aggiunti nuovi nodi DOM utilizzando add().

Il tuo esempio di codice particolare, è un po 'prolisso, anche se, come la stessa avrebbe potuto essere raggiunto in questo modo:

var allFields = $("#instrument, #quantity, #orderType, #price, #validityDate");