2010-01-04 25 views
330

Duplicar posibles:
Is there a CSS parent selector?selector CSS para "foo que contiene barra"?

¿Hay una manera de hacer un selector CSS que coincida con el siguiente?

All OBJECT elements 
    which have a PARAM element inside of them 

El selector

OBJECT PARAM 

no funciona, ya que coincide con el PARAM, no el objeto. Me gustaría aplicar {display: none} a los objetos; es inútil aplicar eso a los PARAM.

(Soy consciente de que podía sacar esto adelante con jQuery - $("object param").closest("object") -., Pero estoy tratando de crear reglas CSS en una página)

+0

hay colecciones CSS selector de esta manera '.main [: flotar, ul, ul> li, p] {display: inline-block;}' –

+3

puede hacer una Objeto selector '' tiene hijos '': no ​​(: vacío) {pantalla: ninguno; } 'http://jsfiddle.net/xeepete/949a55oo/ – xeepete

+0

@xeepete ¿me puede dar una sugerencia más completa? – SuperUberDuper

Respuesta

228

No, lo que busca sería llamado selector principal. CSS no tiene ninguno; se han propuesto varias veces, pero no conozco ningún estándar existente o próximo que los incluya. Tiene razón en que necesitaría usar algo como jQuery o usar anotaciones de clase adicionales para lograr el efecto que desea.

Aquí hay algunas preguntas similares con resultados similares:

+74

JSYK, el selector principal de CSS vendrá en CSS4, ya que la capacidad de seleccionar qué elemento de un selector se diseñó colocando un signo de dólar delante de él: '$ div> span' seleccionaría el div que tiene un intervalo como un niño directo. – Ian

+85

Ponga un signo de dólar antes de una parte del selector, por lo que podría interferir con la sintaxis de SCSS/SASS. ¿Por qué no usan las tantas veces propuestas '' 'signo, o': padres' pseudo clase, o incluso el signo '!' Después de una parte del selector? Todos me parecen más lógicos, que usar el signo '$' ... –

+8

sí lo sé, php mucho –

88

Lo único que se le asemeja es la clase :contains seudo en CSS3, pero eso solo selecciona contenido textual, no etiquetas o elementos, por lo que no tiene suerte.

Una forma más sencilla de seleccionar uno de los padres con niños específicos en jQuery se puede escribir como:

$('#parent:has(#child)'); 
+0

Gracias, pero ¿cómo es eso diferente de $ ("# parent #child")? –

+76

'$ (" # parent #child ")' selecciona todos los elementos nios que son elementos secundarios de #parent. '$ ('# parent: has (#child)')' selecciona todos los elementos #parent que tienen #child como hijos. –

+8

El OP dijo que sabía cómo hacerlo con jQuery, pero quería CSS – MayorMonty

0

¿Hay alguna forma en que programáticamente podría aplicar una clase para el objeto?

<object class="hasparams"> 

luego hacer

object.hasparams 
+0

Gracias, pero necesito hacer esto antes de que los objetos existan; de lo contrario, se iluminarán momentáneamente antes de ocultarse. –

+0

Si su problema es el destello del contenido sin estilo (FOUC) quizás deba resolver esto. Vea aquí: http://stackoverflow.com/questions/3221561/need-help-eliminating-flash-of-unstyled-content-on-my-site/9823468#9823468 – andy

+1

Pocos años tarde a la fiesta pero SÍ, tome una mira la respuesta tahdhaze09, usarías "objeto [clase^= 'hasparams']" – silver

Cuestiones relacionadas