Plusieurs paramètres pour le sélecteur jQuery?

112

Je regardais juste le plug-in de bouton jQueryUI et j'ai remarqué ceci

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

Je n'ai jamais vu quelque chose comme ça. Est-ce comme plusieurs sélections dans un sélecteur jQuery?

chobo2
la source

Réponses:

172

Le deuxième argument ( ".demo"dans votre exemple) est le contexte , en gros votre sélecteur est limité pour ne correspondre qu'aux descendants d'un contexte déterminé :

$(expr, context)

Est juste équivalent à utiliser la findméthode:

$(context).find(expr)

Jetez un œil à la documentation de la fonction jQuery :

Contexte du sélecteur

Par défaut, les sélecteurs effectuent leurs recherches dans le DOM en commençant à la racine du document. Cependant, un autre contexte peut être donné pour la recherche en utilisant le deuxième paramètre facultatif de la $()fonction. Par exemple, si dans une fonction de rappel, nous souhaitons effectuer une recherche d'un élément, nous pouvons restreindre cette recherche:

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

Notez également que le sélecteur que vous publiez "button, input:submit, a"s'appelle Sélecteur multiple et que vous pouvez y spécifier n'importe quel nombre de sélecteurs à combiner en un seul résultat, simplement en les séparant par une virgule.

CMS
la source
Cool n'a jamais su ça. Quand je voulais limiter, disons comme un secteur de classe pour qu'il ne recherche pas toute la page, j'ai juste fait quelque chose comme $ ('# id .class')
chobo2
C'est vraiment à l'envers par rapport à ce que vous auriez pensé en regardant la source. Je m'attendrais à ce que le premier argument soit la super classe suivie de sous-classes qui la réduisent. Et bien.
light24bulbs
3
Est-ce plus rapide pour le navigateur si je définis un contexte?
Andres SK