2015-07-05 12 views
5

Mi sono imbattuto in questo post su questo sito con un jFiddle che mostra il seguente menu per JQUery, beh, ho visto questo pezzo di sintassi che non riesco a capire.Che cosa significa questa riga di codice JQuery?

JFiddle: http://jsbin.com/oxajeq/3/edit?html,css,js,console,output

linea di codice che non capisco

$('#mini-logo')[logoSH](300); 

So che la prima parte di selezionare l'elemento con id di mini-logo, ma non ho idea di quello che il resto del la sintassi è! nel codice, [logoSH] può diventare visibile o nascosto, mentre il() alla fine indica la durata. Tuttavia, non riesco a trovare alcun esempio di qualcosa che usi questa sintassi. Ho anche cercato su google per CSS3, JQUery, transizioni, effetti, animazioni, qualsiasi cosa di ciò che potrebbe essere e senza fortuna. Trovo cose che sono metodi, e altri che non sono metodi ma prendono parametri, ma niente come questo codice. So che quello che c'è dentro [] non è un metodo, ma non riesco a capire cosa siano. Grazie in anticipo per qualsiasi aiuto.

+4

Si noti che questo non è niente di speciale su jQuery, è solo l'accesso alla proprietà dell'oggetto JavaScript standard. Non è correlato ai CSS. – nnnnnn

+0

Sto ancora cercando di capire come funziona JS, quindi con quello che hai detto in mente, è un oggetto js con proprietà, o è una funzione js/jquery? –

+0

'$ ('# mini-logo')' chiama la funzione '$', che restituisce un oggetto. L'oggetto restituito ha proprietà e metodi che è possibile utilizzare. – nnnnnn

risposta

11

Questo costrutto si basa sul bracket notation per accedere alle proprietà. Permette qui una selezione dinamica del metodo da applicare (show o hide).

logoSH è "show" o "hide".

Il che significa che la vostra linea è o

$('#mini-logo')["show"](300); o $('#mini-logo')["hide"](300);

che si può anche leggere come

$('#mini-logo').show(300); o $('#mini-logo').hide(300);

Questo è un costrutto comune, che si può anche trovare con un operatore ternario:

$('#mini-logo')[someBool ? "show" : "hide"](300); 

Nota: se non ci fosse la durata, si potrebbe usare la funzione toggle che accetta un valore booleano come argomento.

+0

Ok, ha senso, quindi immagino che le funzioni .show() e .hide() siano JQuery? –

+0

@TannerSummer sì. Aggiunti collegamenti nella risposta. –

+0

Sembra che ho bisogno di tornare indietro e rivedere oggetti, proprietà e funzioni in JS. Sono così abituato a java e C++, questo sembra confondermi, Se ricordo bene, gli oggetti JS possono contenere proprietà con valori, o funzioni e dal sito web che stavo leggendo su JS, menzionavano l'accesso a una funzione di un oggetto tramite oggetto.funzione o oggetto ['funzione']. ma non l'ho mai visto nel formato di (JS) elemento [funzione] (parametri) o (JQuery) $ ('elemento') [funzione] (parametri). Apprezzo molto l'aiuto Denys grazie :) –

Problemi correlati