2011-01-24 16 views
9

puedo comprobar este selector: selector de¿Por qué no funciona el selector h3: nth-child (1): ('a')?

h3:nth-child(1):contains('a') 

no funciona?

que comprobarlo en firefinder y no hace nada de retorno (no información que hay elementos cero)

Entonces mira esto:

h3:nth-child(1) 

y vuelve h3, de modo selector es casi bueno, pero algo con esto (h3 tiene texto 'a') el texto sale mal.

Respuesta

19

:contains() no se iba a ser un selector CSS3 (thanks T.J. Crowder for the link), pero no lo hacen, muy probablemente debido a la forma en que funciona tiende a conducir a un rendimiento grave y sobre-selección de temas. Por ejemplo, si un elemento E coincide con :contains() para un argumento de cadena dado, entonces todos sus antecesores también coincidirían; usarlo con un selector universal daría lugar a resultados inesperados con ciertas propiedades de estilo, además de ser lento para el navegador.

No hay otro selector CSS que sirva para un propósito como :contains(). Por lo que tendrá que encontrar alguna otra manera, ya sea modificando el código HTML o incluso mediante el uso de jQuery de :contains(), para lograr el efecto deseado:

Seleccionar un elemento h3
si es el primer hijo de su padre
y su texto contiene la letra 'a'.

Para los usuarios de jQuery y el selenio RC::contains() se implementa en el motor de selección utilizado por chisporroteo jQuery, que también se utiliza en Selenio RC (pero no selenio WebDriver). Funciona como se describe en in this decade-old revision of the CSS3 spec, pero nuevamente, debido a la forma en que la especificación lo describe, debe usarlo con cuidado o puede llevar a selecciones inesperadas.

Como nota final, h3:nth-child(1) puede reemplazarse por h3:first-child, que como selector de CSS2 tiene mejor compatibilidad con el navegador.

+0

hecho. Iba a definirse (incluso hay una sección en la [especificación CSS3] (http://www.w3.org/TR/2009/PR-css3-selectors-20091215/), Sección 6.6.6), pero no fue así. –

+0

'Esta sección se dejó en blanco intencionalmente. (Esta sección definió previamente a: contiene() pseudo-clase.) '¿Eso significa que el W3C tomó': contains' de la especificación CSS3? http://www.w3.org/TR/css3-selectors/ –

+0

@ T.J. Crowder Eso es lo que necesitaba! Gracias –

3

Si usted está tratando de utilizar :contains(a) para encontrar una etiqueta de ancla (en lugar de la letra A ), se puede utilizar:

h3:nth-child(1) a 

o

h3:first-child a 
Cuestiones relacionadas