2010-01-04 30 views
330

Eventuali duplicati:
Is there a CSS parent selector?Selettore CSS per "foo che contiene bar"?

C'è un modo per fare un selettore CSS che corrisponde al seguente?

All OBJECT elements 
    which have a PARAM element inside of them 

Il selettore

OBJECT PARAM 

non funziona, in quanto corrisponde al PARAM, non l'oggetto. Mi piacerebbe applicare {display: none} agli oggetti; è inutile applicarlo ai PARAM.

(mi rendo conto che potrei tirare fuori questo con jQuery - $("object param").closest("object") -. Ma sto cercando di creare regole CSS in una pagina)

+0

c'è selettore collezioni css come questo .main '[: hover, ul, ul> li, p] {display: inline-block;}' –

+3

può fare "has children" selector 'object: not (: empty) {display: none; } 'http://jsfiddle.net/xeepete/949a55oo/ – xeepete

+0

@xeepete puoi fornire un suggerimento più completo? – SuperUberDuper

risposta

228

No, ciò che si sta cercando sarebbe chiamato un selettore genitore. Il CSS non ne ha; sono stati proposti più volte, ma non conosco nessuno standard esistente o imminente che li includa. Hai ragione a pensare che avresti bisogno di usare qualcosa come jQuery o usare annotazioni di classe aggiuntive per ottenere l'effetto che desideri.

Ecco alcune domande simili con risultati analoghi:

+74

JSYK, il selettore genitore CSS arriverà nei CSS4, in quanto la possibilità di selezionare quale elemento in un selettore è in stile inserendo un segno di dollaro di fronte ad esso: '$ div> span' selezionerebbe il div che ha uno span come un bambino diretto – Ian

+85

Mettere un segno di dollaro prima di una parte selettore, in modo che possa interferire con la sintassi SCSS/SASS, cool. Perché non usano le molte volte proposte '<' sign, o ': parent' pseudo class, o anche il simbolo'! 'Dopo una parte selector? Sembrano tutti più logici per me, che usare il segno '$' ... –

+8

so, php much –

88

L'unica cosa che si avvicina è la classe :contains pseudo in CSS3, ma che seleziona solo il contenuto testuale, non i tag o gli elementi, quindi sei sfortunato.

Un modo più semplice per selezionare un genitore con figli specifici in jQuery può essere scritta come:

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

Grazie - ma come è diverso da $ ("# padre #child")? –

+76

'$ (" # parent #child ")' seleziona tutti gli elementi #child che sono figli di #parent. '$ ('# parent: ha (#child)')' seleziona tutti gli elementi #parent che hanno #child come figli. –

+8

L'OP ha detto che sapeva come farlo con jQuery, ma voleva CSS – MayorMonty

0

Esiste un modo si potrebbe applicare programatically una classe per l'oggetto?

<object class="hasparams"> 

quindi fare

object.hasparams 
+0

Grazie, ma ho bisogno di fare questo prima che gli oggetti esistano ancora; altrimenti lampeggeranno momentaneamente prima di essere nascosti. –

+0

Se il tuo problema è il flash di contenuti senza stile (FOUC) forse dovresti risolvere questo problema. Vedi qui: http://stackoverflow.com/questions/3221561/need-help-eliminating-flash-of-unstyled-content-on-my-site/9823468#9823468 – andy

+1

Pochi anni di ritardo alla festa, ma SÌ, prendi un guarda la risposta di tahdhaze09, useresti "object [class^= 'hasparams']" – silver

Problemi correlati