2011-06-30 14 views
5

Estoy usando la validación de jQuery.selectores CSS: cómo seleccionar 'para' en CSS?

Cuando por ahora válida, validador es la creación de los:

<label class="error" for="username" generated="true"> 

Como toda etiqueta tiene la misma class = error puedo seleccionar con CSS éste exacta basada en 'para'?

Sé cómo solucionar esto con jQuery, pero siempre buscando la manera más limpia y pura. Cualquier sugerencia muy apreciada.

Pete

+0

si está produciendo Elementos de las etiquetas únicas, wouldent es conveniente adjuntar algunos identificadores únicos a cada etiqueta para jq uery selecciones? – John

+0

@john - 'entradas' tienen ID único - pero jQuery Validator no las copie - podría llamarlas (entradas con ID) por jQUery, que encontrar el siguiente elemento y agregarle clase (otra clase única para etiquetar con clase error) - pero este no era el punto de mi pregunta. Estoy buscando una solución pura de CSS. – Iladarsda

+0

@jAndy - Este es un proyecto interno, solo Chrome y solo yo. – Iladarsda

Respuesta

12

Utilizando el (CSS2) attribute selector:

.error[for="username"] 

Esto funciona en IE8 + y todos los navegadores modernos.


selector de atributos de Internet Explorer 7 está libre de errores: as explained here, para que coincida con for debe utilizar htmlFor.

Por lo tanto, si necesita ayuda IE7, utilice esto:

.error[for="username"], .error[htmlFor="username"] 

Gracias IE7, por hacer que mi respuesta sobre el doble de lo que tenía que ser.

+0

Solo asegúrese de entender lo que la referencia de URL está tratando de decir, es el hecho de que "para" es una palabra clave que hace que IE7 falle, ¿correcto? Si usa algo como .error [foo = 'bar'], ¿coincidiría con

como se esperaba? –

+0

@Michael Edenfield: Eso es correcto. – thirtydot

3

Cualquier atributo se puede seleccionar con CSS o jQuery usando la notación []. CSS se aplica a cualquier sintaxis similar a XML, no solo HTML: no sabe (ni se preocupa) qué atributos son "válidos", siempre y cuando la estructura esté bien formada.

.error[for='username'] 
    { 
    } 

o para un "comienza con"

.error[for^='userprefix'] 
    { 
    } 
1

En el css:

.error[for=username] { 
} 

En el jQuery

$('.error[for=username]') 
+0

Creo que jQuery 1.6 requiere comillas para los valores de los atributos. –

Cuestiones relacionadas