2010-04-20 8 views
87

Je regardais simplement le bouton jQueryUI plug-in et remarquéParamètres multiples pour le sélecteur jQuery?

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

Je ne ai jamais vu quelque chose comme ça. Est-ce que cela ressemble à plusieurs sélections dans un sélecteur jQuery?

Répondre

137

Le second argument (".demo" dans votre exemple) est le contexte, essentiellement votre sélecteur est limité à correspondre seuls les descendants d'un déterminé contexte:

$(expr, context) 

Est-ce juste équivalent à utiliser la méthode find :

$(context).find(expr) 

Donnez un coup d'oeil à la documentation du jQuery function:

Sélecteur Contexte

Par défaut, les sélecteurs effectuent leurs recherches dans le DOM à partir de la racine du document. Cependant, un autre contexte peut être donné pour la recherche en utilisant le second paramètre facultatif à la fonction $(). Pour exemple, si dans une fonction de rappel que nous voulons faire une recherche pour 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 vous postez "button, input:submit, a", est appelé Multiple Selector, et vous pouvez y spécifier n'importe quel nombre de sélecteurs à combiner en un seul résultat, en les séparant simplement par une virgule.

+0

Cool n'a jamais su cela. Quand je voulais limiter comme dire un secteur de classe afin qu'il ne cherche pas toute la page, j'ai juste fait quelque chose comme $ ('# id .class') – chobo2

+0

C'est vraiment en arrière de 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

+2

Est-ce plus rapide pour le navigateur si je définis un contexte? – andufo