Mehrere Parameter für den jQuery-Selektor?

112

Ich habe mir gerade das Plug-In für die jQueryUI-Schaltfläche angesehen und dies bemerkt

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

Ich habe so etwas noch nie gesehen. Ist dies wie eine Mehrfachauswahl in einem jQuery-Selektor?

chobo2
quelle

Antworten:

172

Das zweite Argument ( ".demo"in Ihrem Beispiel) ist der Kontext . Grundsätzlich ist Ihr Selektor darauf beschränkt, nur Nachkommen eines bestimmten Kontexts zu finden :

$(expr, context)

Ist nur gleichbedeutend mit der findMethode:

$(context).find(expr)

Schauen Sie sich die Dokumentation der jQuery-Funktion an :

Auswahlkontext

Standardmäßig führen Selektoren ihre Suche im DOM ab dem Dokumentstamm durch. Es kann jedoch ein alternativer Kontext für die Suche angegeben werden, indem der optionale zweite Parameter für die $()Funktion verwendet wird. Wenn wir beispielsweise innerhalb einer Rückruffunktion nach einem Element suchen möchten, können wir diese Suche einschränken:

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

Beachten Sie auch, dass der von Ihnen veröffentlichte Selektor "button, input:submit, a"als Mehrfachselektor bezeichnet wird. Dort können Sie eine beliebige Anzahl von Selektoren angeben, die zu einem einzigen Ergebnis kombiniert werden sollen, indem Sie sie einfach durch ein Komma trennen.

CMS
quelle
Cool wusste das nie. Als ich say wie ein Klassensektor einschränken wollte, damit nicht die gesamte Seite durchsucht wird, habe ich einfach so etwas wie $ ('# id .class')
chobo2
Das ist wirklich rückwärts von dem, was Sie gedacht hätten, wenn Sie sich die Quelle angesehen hätten. Ich würde erwarten, dass das erste Argument die Superklasse ist, gefolgt von Unterklassen, die es eingrenzen. Ah, gut.
light24bulbs
3
Ist es für den Browser schneller, wenn ich einen Kontext definiere?
Andres SK