2013-06-06 11 views
6

Sto usando il codice come $('.elem',elem), $('.elem',elem).tabs().

$(".elem") viene utilizzato per selezionare gli elementi con quella classe.

Ma qual è il prossimo dopo virgola? A che cosa serve?

+2

E 'il [selettore di contesto] (http: // api.jquery.com/jQuery/#jQuery1), equivale a '$ (elem) .find ('. elem');' – billyonecan

+0

Uso jQuery da quasi 2 anni b Non abbiamo prestato molta attenzione a questo. :) +1 –

risposta

11

$('.elem',elem) è $(elem).find('.elem'). In effetti, questo è ciò che jQuery fa con esso sotto le coperte. Trova tutti gli elementi con classe "elem" discendenti dell'elemento elem.

Questo è coperto in the API documentation. Vale la pena passare un'ora a leggerlo dall'inizio alla fine. Ci sono ogni genere di cose utili là fuori che non sono ben note. :-) (Non sto dicendo che questo è uno di loro [io non sono un fan di me stesso, alcuni sono], solo che generalmente ci sono molte cose utili lì dentro.)

+0

sembra che non ci sia alcun vantaggio nell'usare il contesto su find(), è vero? –

+4

@roasted: diritto. * Bene *, suppongo che alcuni indichino che sono meno i personaggi. :-) Ma quando dico "questo è ciò che jQuery fa con esso sotto le copertine" intendo esattamente questo: Rileva letteralmente che hai fatto '$ ('. Elem', elem)' e passa a '$ (elem) .find ('elem') '. Quindi la forma '$ ('. Elem', elem)' aggiunge semplicemente un'altra chiamata di funzione (non che ciò sia veramente importante). –

4

Questo è il contesto in cui viene eseguita la ricerca.

E 'lo stesso di quello

$(elem).find('.elem') 

Vedi documentation here

0

Il secondo parametro passato alla funzione jQuery definisce l'ambito o il contesto del primo selettore.

Indica a jQuery di trovare tutti gli elementi con una classe di elem all'interno dell'elemento fornito nel secondo parametro. Gli elementi con una classe di .elem al di fuori di elem non saranno selezionati.

Dato il seguente codice HTML:

<div id="included"> 
    <input/> 
    <input/> 
</div> 
<div id="excluded"> 
    <input/> 
    <input/> 
</div> 

Questi selettori producono il seguente risultato:

console.log($("input", "#included").length); //2 only those inside included 
console.log($("input").length); //4 all inputs 

Esempio di lavoro:http://jsfiddle.net/LE6eE/

+0

Ho usato il selettore con il metodo .find(). ma $ (". elem", elem) funziona bene rispetto a .find(). Quindi il metodo find() è utile o no? – Natesan

+0

Non sono sicuro che ci sia qualcosa che lo specificatore del contesto non può fare. Immagino che 'find' sia un po 'più intuitivo e più facile da leggere. –

Problemi correlati