2013-03-11 32 views
5

Questo è solo veloce (spero).

Sono stato recentemente in alle pagine di dialogo jQuery UI per guardare tramite il modulo all'interno di una finestra di dialogo http://jqueryui.com/dialog/#modal-form e ho notato un po 'di codice che non avevo mai visto prima:

var allFields = $([]).add(#input1).add(input2).add(input3).... 

Mi stavo chiedendo cosa $ ([]) significava?

In un primo momento ho pensato che fosse un modo per creare un array in jQuery, ma quando provo:

allFields.add(input4) 

dopo la variabile è dichiarata non altro è essere aggiunto?!?

Qualsiasi aiuto sarebbe molto apprezzato! :) Ho provato a fare ricerche su google, tuttavia, non ho molta fortuna.

risposta

4

La funzione jQuery() accetta un numero di argomenti diversi, uno dei quali è un array di elementi DOM . Passare un array di questo tipo si tradurrà in un nuovo oggetto jQuery, contenente tali elementi, che verranno restituiti. In questo caso stanno passando un array vuoto, quindi restituisce un oggetto jQuery contenente zero elementi.

La funzione .add() aggiungerà più elementi a un set esistente.

Così $([]) crea un oggetto jQuery che non contiene elementi, .add('#input1') sarebbe aggiungere l'elemento con un id di input1 a tale insieme. Chiamando di nuovo .add('#input1') non aggiungerebbe nulla perché l'elemento è già presente.

+0

Grazie, Anthony. Originariamente ho pubblicato uno script php e ha restituito tutti i valori aggiunti inizialmente. Quando ho provato ad aggiungere un ulteriore elemento, ad es. var allFields = $ ([]). add (input1) .add (input2); allfields.add (input3) in solo ha restituito i 2 valori originali anziché tutti i 3? –

+0

@RossWilson Cosa sono 'input1',' input2' e 'input3'? –

+2

@RossWilson: il metodo 'add' crea un nuovo set e lo restituisce. Dovresti riassegnare 'allFields':' allFields = allFields.add (input3) ' –

0
var allFields = $([]); 
allFields.add() 

nella tua domanda si sta eguagliando la variabile per il valore di ritorno del metodo .add()