2009-12-22 18 views
129

Tengo algunos enlaces que quiero seleccionar la clase y la identificación al mismo tiempo.jQuery: seleccione la clase y la identificación de un elemento al mismo tiempo?

Esto se debe a que tengo 2 comportamientos diferentes. Cuando una clase de enlaces tiene un nombre de clase se comportan de una manera, cuando la misma clase de enlaces tiene otro nombre de clase, se comportan de manera diferente. Los nombres de clase son switch con jquery.

Así que tengo que ser capaz de seleccionar una clase Y ID de enlaces al mismo tiempo. es posible?

que he probado:

$("a .save #country") 

sin ningún resultado.

Respuesta

235

que puede hacer:

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

O

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

O

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

como prefiera.

Así que, sí, puede especificar un selector que tenga que coincidir con la ID y la clase (y, potencialmente, el nombre de la etiqueta y cualquier otra cosa que desee agregar).

+23

Así que básicamente es como: $ ("# a .b") significa elemento con la clase b dentro del elemento con id a. $ ("# a.b") significa elemento con clase b e id a. El truco es el espacio entre #a y .b –

+8

Debe tener cuidado de usar el selector de id. Antes de la clase, de lo contrario, no funciona. Ejemplo: $ (". Save # country") ... no devuelve resultados. – slotomo

0

¿Qué ofrece este código?

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

apresurado He votado mal en esta respuesta. Lo siento ... – devundef

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

seleccionará tanto la clase "a.save" y "país", id.

7

que va a funcionar cuando se añade espacio entre id y class identificador

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

+1

en realidad esto funcionó para mí, ya que no funcionaba como $ ('# countery.save') ¡así que gracias! – Nikola

+0

He encontrado a veces que es exigente con el espacio. como $ (. selector> .it # id) funciona, pero $ (. selector> .item #id) no lo hace. –

+14

El espacio es el * selector descendiente *, es decir, "A B" significa "Coincide con todos los elementos que coincidan con B que son descendientes de elementos que coinciden con A". 'AB' significa" seleccionar todos los elementos que coincidan con A y B ". Entonces realmente depende de lo que quieres lograr. '# countery.save' y' #countery .save' no son equivalentes. –

32

Sólo para añadir que la respuesta que Alex proporcionado trabajó para mí, y no el que se destaca como una respuesta.

Ésta no funcionaba para mí

$('#country.save') 

Pero este sí:

$('#country .save') 

así que mi conclusión es utilizar el espacio. Ahora no sé si estoy usando la nueva versión de jQuery (1.5.1), pero de todos modos espero que esto ayude a cualquiera con el mismo problema que he tenido.

edición: crédito completo para la explicación (en el comentario a la respuesta de Alex) va a Felix Kling que dice:

El espacio es el selector descendiente, es decir, AB significa "ajuste de todos los elementos que partido B que son descendientes de elementos que coinciden con A ". AB significa "seleccionar todo el elemento que coincida con A y B". Entonces realmente depende de lo que quieres lograr. #country.save y #country .save no son equivalentes.

+2

¿El problema es que dijiste "countery" en lugar de "country"? – amindfv

1

Al final se aplican las mismas reglas que para css.

Así que creo que this reference podría ser de algún uso valioso.

+0

¿Podría resumir el contenido de su referencia? – krlmlr

+0

En realidad, de acuerdo con http://api.jquery.com/category/selectors/ jQuery tiene algunos selectores propios; Además, en realidad no dice que todos los selectores CSS 1-3 sean compatibles ... – SamB

+0

@SamB Tienes razón, pero lo dice _borrows_ de CSS 1-3 Y agrega el suyo. Sigo pensando que el enlace al material del W3C es válido para esta discusión. – akousmata

Cuestiones relacionadas