Parametri multipli per jQuery selector?


112

Stavo solo guardando il plug-in del pulsante jQueryUI e l'ho notato

$("button, input:submit, a", ".demo").button();

Non ho mai visto qualcosa di simile. È come più selezioni in un selettore jQuery?

Risposte:


172

Il secondo argomento ( ".demo"nel tuo esempio) è il contesto , fondamentalmente il tuo selettore è limitato per abbinare solo i discendenti di un determinato contesto :

$(expr, context)

È solo equivalente a utilizzare il findmetodo:

$(context).find(expr)

Dai uno sguardo alla documentazione della funzione jQuery :

Contesto del selettore

Per impostazione predefinita, i selettori eseguono le loro ricerche all'interno del DOM a partire dalla radice del documento. Tuttavia, è possibile fornire un contesto alternativo per la ricerca utilizzando il secondo parametro facoltativo della $()funzione. Ad esempio, se all'interno di una funzione di callback desideriamo fare una ricerca per un elemento, possiamo restringere quella ricerca:

$('div.foo').click(function() {
  $('span', this).addClass('bar');
  // it will find span elements that are
  // descendants of the clicked element (this)
});

Nota anche che il selettore che pubblichi "button, input:submit, a", si chiama Selettore multiplo , e lì puoi specificare qualsiasi numero di selettori da combinare in un singolo risultato, semplicemente separandoli con una virgola.


Cool non lo sapeva mai. Quando volevo limitare, dire come un settore di classe in modo che non cerchi l'intera pagina, ho appena fatto qualcosa come $ ('# id .class')
chobo2

Questo è davvero al contrario di quello che avresti pensato guardando la fonte. Mi aspetto che il primo argomento sia la super classe seguita da sottoclassi che lo restringono. Ah bene.
lampadine

3
È più veloce per il browser se definisco un contesto?
Andres SK
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.