Wiele parametrów selektora jQuery?

112

Właśnie patrzyłem na wtyczkę przycisku jQueryUI i zauważyłem to

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

Nigdy czegoś takiego nie widziałem. Czy to jest jak wielokrotne zaznaczenia w jednym selektorze jQuery?

chobo2
źródło

Odpowiedzi:

172

Drugi argument ( ".demo"w twoim przykładzie) to kontekst , w zasadzie twój selektor jest ograniczony tylko do elementów potomnych określonego kontekstu :

$(expr, context)

Jest równoważne użyciu findmetody:

$(context).find(expr)

Spójrz na dokumentację funkcji jQuery :

Kontekst selektora

Domyślnie selektory przeprowadzają wyszukiwanie w DOM, zaczynając od katalogu głównego dokumentu. Można jednak podać alternatywny kontekst wyszukiwania, używając opcjonalnego drugiego parametru $()funkcji. Na przykład, jeśli w funkcji wywołania zwrotnego chcielibyśmy przeprowadzić wyszukiwanie elementu, możemy ograniczyć to wyszukiwanie:

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

Zwróć także uwagę, że wysyłany przez Ciebie selektor "button, input:submit, a"nazywa się Selektor wielokrotny i tam możesz określić dowolną liczbę selektorów do połączenia w jeden wynik, po prostu oddzielając je przecinkami.

CMS
źródło
Cool nigdy tego nie wiedział. Kiedy chciałem ograniczyć, powiedz jak sektor klasy, aby nie przeszukiwać całej strony, po prostu zrobiłem coś takiego jak $ ('# id .class')
chobo2
To naprawdę jest odwrotne od tego, co można by pomyśleć patrząc na źródło. Spodziewałbym się, że pierwszy argument będzie superklasą, a po niej podklasy, które ją zawężają. Ach tak.
light24bulbs
3
Czy definiowanie kontekstu jest szybsze dla przeglądarki?
Andres SK,