2011-09-16 13 views
14

Sto solo passando attraverso alcuni tutorial backbone e ho una domanda generale di jQuery che mi stavo chiedendo da un po '.

A volte vedo le chiamate con un secondo parametro nel selettore jQuery, ad esempio $('ul', this.el).

Qual è lo scopo di questo secondo parametro nel selettore? E in realtà non intendo nel contesto di alcun esempio di backbone, solo in generale qual è lo scopo di passare il secondo parametro nel selettore e perché è sempre un oggetto che viene passato lì? Non riesco a trovare alcuna documentazione su questo.

+0

lo cercava ... non riuscivo a trovarlo. grazie per il link però – user834418

risposta

10

Restringe la ricerca di un tag ul all'interno dell'elemento DOM del componente di visualizzazione.

+0

Ah, bello! Pensavo che fare qualcosa del genere non potesse verbalizzarlo a me stesso. Grazie! – user834418

+1

btw, sai se ci sono dei vantaggi in termini di prestazioni a farlo in questo modo piuttosto che $ (this.el) .find ('ul'); o $ (this.el + 'ul'); o è essenzialmente lo stesso? – user834418

14

Il significato è identico a:

$(this.el).find('ul') 

Internamente, dopo una serie di prove, jQuery capisce che ha bisogno di capovolgere intorno a quanto sopra .find() chiamata, così fa, e ricomincia.

Quindi fornire il contesto come secondo argomento è solo un modo più lento di eseguire un .find().

Here it is in the source.

// HANDLE: $(expr, context) 
// (which is just equivalent to: $(context).find(expr) 
} else { 
    return this.constructor(context).find(selector); 
} 

... dove this.constructor è la funzione $, context è il tuo secondo argomento, e selector è il vostro primo argomento.