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?

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.


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.