2009-12-22 5 views
129

Ich habe einige Links, die ich Klasse und ID gleichzeitig auswählen möchte.jQuery: Wählen Sie die Klasse und die ID eines Elements gleichzeitig aus?

Das liegt daran, dass ich zwei verschiedene Verhaltensweisen habe. Wenn eine Klasse von Links einen Klassennamen bekommt, verhalten sie sich auf eine Art. Wenn die gleichen Klassen von Links einen anderen Klassennamen bekommen, verhalten sie sich anders. Die Klassennamen werden mit jquery gewechselt.

Also muss ich in der Lage sein, eine Linksklasse UND ID gleichzeitig zu wählen. Ist das möglich?

Ich habe versucht:

$("a .save #country") 

ohne Ergebnis.

Antwort

235

Sie tun können:

$("#country.save")... 

ODER

$("a#country.save")... 

ODER

$("a.save#country")... 

wie Sie bevorzugen.

Also ja, Sie können einen Selektor angeben, der die ID und Klasse (und möglicherweise Tag-Namen und alles andere, was Sie werfen möchten) übereinstimmen.

+23

Also im Grunde ist es wie: $ ("# a .b") bedeutet Element mit Klasse b innerhalb Element mit ID a. $ ("# a.b") bedeutet Element mit Klasse b und id a. Der Trick ist der Abstand zwischen #a und .b –

+8

Seien Sie vorsichtig, dass Sie ID-Selektor vor Klasse verwenden, andernfalls funktioniert es nicht. Beispiel: $ (". Save # country") ... liefert keine Ergebnisse. – slotomo

0

Wie wäre es mit diesem Code?

$("a.save#country") 
+0

in Eile habe ich auf diese Antwort falsch gewählt. Sorry ... – devundef

0
$("a.save, #country") 

wird sowohl "a.save" Klasse und "Land" id.

7

Es wird funktionieren, wenn zwischen ID und Klassen-ID

$("#countery .save")...

+1

eigentlich funktionierte das für mich, da es nicht wie $ ('# countery.save') funktionierte, also danke! – Nikola

+0

Ich habe manchmal gefunden, es ist wählerisch über den Raum. wie $ (. selector> .item # id) funktioniert, aber $ (. selector> .item #id) nicht. –

+14

Das Leerzeichen ist der * absteigende Selektor *, d. H. "A B" bedeutet "Passe alle Elemente an, die B entsprechen, die ein Nachkomme von Elementen sind, die A entsprechen". "AB" bedeutet "wähle alle Elemente, die zu A und B passen". Es kommt also wirklich darauf an, was Sie erreichen wollen. '# countery.save' und' #countery.save' sind nicht gleichwertig. –

32

nur hinzufügen, dass die Antwort, dass Alex bereitgestellt für mich gearbeitet, und nicht derjenige, der als Antwort Hinzufügen Raum hervorgehoben.

Dieser hat bei mir nicht funktioniert

$('#country.save') 

Aber das tat:

$('#country .save') 

so ist meine Schlussfolgerung, den Raum zu nutzen. Jetzt weiß ich nicht, ob es die neue Version von jQuery ist, die ich benutze (1.5.1), aber ich hoffe trotzdem, das hilft jedem mit ähnlichen Problemen, die ich hatte.

edit: Volle Gutschrift für Erklärung (im Kommentar zu Alex 'Antwort) zu Felix Kling geht, der sagt:

Der Raum der Nachkomme Selektor ist, dh AB bedeutet „Spiel alle Elemente, die Spiel B welche sind ein Nachkomme von Elementen, die zu A passen ". AB bedeutet "wähle alle Elemente, die zu A und B passen". Es kommt also wirklich darauf an, was Sie erreichen wollen. #country.save und #country .save sind nicht gleichwertig.

+2

Ist das Problem, dass Sie "countery" statt "country" sagten? – amindfv

1

Am Ende gelten die gleichen Regeln wie für CSS.

Also ich denke, this reference könnte von einiger nützlicher Verwendung sein.

+0

Können Sie den Inhalt Ihrer Referenz zusammenfassen? – krlmlr

+0

Tatsächlich hat jQuery laut http://api.jquery.com/category/selectors/ einige Selektoren; es sagt auch nicht, dass alle CSS 1-3 Selektoren unterstützt werden ... – SamB

+0

@SamB Du hast recht, aber es sagt es _borrows_ von CSS 1-3 UND fügt seine eigenen hinzu. Ich denke immer noch, dass der Link zu den W3C-Sachen für diese Diskussion gültig ist. – akousmata

Verwandte Themen