jQuery: selezionare la classe e l'id di un elemento contemporaneamente?


170

Ho alcuni link che voglio selezionare class e id allo stesso tempo.

Questo perché ho 2 comportamenti diversi. Quando una classe di collegamenti ha un nome di classe si comportano in un modo, quando gli stessi clas di collegamenti hanno un altro nome di classe si comportano in modo diverso. I nomi delle classi vengono cambiati con jquery.

Quindi devo essere in grado di selezionare una classe di collegamenti AND id allo stesso tempo. È possibile?

Ho provato:

 $("a .save #country")

senza alcun risultato.

Risposte:


305

Tu puoi fare:

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

O

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

O

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

come preferisci.

Quindi sì, puoi specificare un selettore che deve corrispondere a ID e classe (e potenzialmente il nome del tag e qualsiasi altra cosa tu voglia inserire).


41
Quindi sostanzialmente è come: $ ("# a .b") significa elemento con classe b all'interno di un elemento con id a. $ ("# ab") significa elemento con classe b e id a. Il trucco è lo spazio tra #a e .b
Bhumi Singhal,

13
Bisogna fare attenzione a usare il selettore ID prima della lezione, altrimenti non funziona. Esempio: $ (". Save # country") ... non restituisce risultati.
slotomo

43

Solo per aggiungere che la risposta fornita da Alex ha funzionato per me, e non quella evidenziata come risposta.

Questo non ha funzionato per me

$('#country.save') 

Ma questo ha fatto:

$('#country .save') 

quindi la mia conclusione è usare lo spazio. Ora non so se è con la nuova versione di jQuery che sto usando (1.5.1), ma spero comunque che questo aiuti a chiunque abbia problemi simili che ho avuto.

modifica: Il merito completo per la spiegazione (nel commento alla risposta di Alex) va a Felix Kling che dice:

Lo spazio è il selettore discendente, ovvero AB significa "Abbina tutti gli elementi che corrispondono a B che sono discendenti di elementi corrispondenti a A". AB significa "seleziona tutti gli elementi che corrispondono a A e B". Quindi dipende davvero da cosa vuoi ottenere. #country.savee #country .savenon sono equivalenti.


2
Il problema che hai detto "controparte" invece di "paese"?
amindfv,

8

Funzionerà quando si aggiunge spazio tra id e identificatore di classe

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


1
in realtà questo ha funzionato per me, dato che non funzionava come $ ('# countery.save'), quindi grazie!
Nikola,

1
Ho scoperto che a volte è pignolo per lo spazio. come $ (. selector> .item # id) funziona, ma $ (. selector> .item #id) no.
Abe Petrillo,

21
Lo spazio è il selettore discendente , cioè A Bsignifica "Abbina tutti gli elementi che corrispondono a B che sono discendenti di elementi corrispondenti a A". ABsignifica "seleziona tutti gli elementi che corrispondono a A e B". Quindi dipende davvero da cosa vuoi ottenere. #countery.savee #countery .savenon sono equivalenti.
Felix Kling,

2

Alla fine si applicano le stesse regole di css.

Quindi penso che questo riferimento possa essere di qualche utilità.


Potresti riassumere i contenuti del tuo riferimento?
krlmlr

In realtà, secondo api.jquery.com/category/selectors jQuery ha alcuni selettori propri; inoltre, in realtà non dice che tutti i selettori CSS 1-3 sono supportati ...
SamB

@SamB Hai ragione, ma dice che prende in prestito da CSS 1-3 E aggiunge il suo. Penso ancora che il collegamento alle cose del W3C sia valido per questa discussione.
Akousmata,

2

Che ne dici di questo codice?

$("a.save#country")

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

selezionerà sia la classe "a.save" che l'id "country".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.