2012-04-19 12 views
16

Ho seguente struttura HTML:Seleziona elemento specifico prima di un altro elemento

<div> 
    <h2>Candy jelly-o jelly beans gummies lollipop</h2> 
    <p> 
    Cupcake ipsum dolor sit amet. Sugar plum liquorice dragée oat cake cupcake. 
    </p> 
    <p> 
    Candy tiramisu bonbon toffee. Croissant pudding ice cream soufflé pastry toffee chocolate bar. Tiramisu wypas tootsie roll icing fruitcake oat cake icing soufflé tiramisu. 
    </p> 
    <h2>Dessert pie cake</h2> 
    <ul> 
    <li>liquorice</li> 
    <li>powder</li> 
    <li>dessert</li> 
    </ul> 
    <h2>Chupa chups sweet dragée</h2> 
    <p> 
    Chocolate cake biscuit pie jelly-o chocolate bar. Marshmallow topping sugar plum apple pie brownie cotton candy dragée lemon drops. Soufflé cake toffee. 
    </p> 
</div> 

vorrei scegliere solo che h2 che è direttamente prima ul. Come posso fare questo? Nel mio contenuto ci sono molti altri uls e molti altri h2s quindi la soluzione dovrebbe essere universale.

risposta

14

Per quanto ne so, i CSS non offre alcuna selectors che si rivolgerà prima di un selettore. Potresti selezionarlo come h2 che è direttamente dopo un p (p + h2)?

h2 { 
    color: #1a1a1a; 
} 

p + h2 { 
    color: #0cc; 
} 

Example on JSFiddle

Come si può vedere, questo è probabilmente il selettore migliore che si può usare se vi affidate ai CSS, anche se si potrebbe facilmente basta aggiungere una classe per ogni h2 che è prima di un ul . Ciò eviterebbe il caso in cui si dispone di una sezione di paragrafo prima di un'altra sezione h2 e paragrafo.

Si potrebbe fare questo utilizzando jQuery:

.highlight { 
    color: #0cc; 
} 

$('ul').prev('h2').addClass('highlight') 

Example on JSFiddle

Questo seleziona ogni ul, quindi l'h2 che è prima di esso, prima infine di aggiungere la classe .highlight ad esso.

+1

Grazie per la risposta. Sapevo della soluzione jQuery, ma mi chiedevo se fosse possibile farlo in puro CSS. – user1292810

+2

Sto provando a selezionare il primo ancoraggio prima del collegamento di eliminazione e non riesco a creare un link 'a' all'interno di un altro link' a', come questo 'file.exe' l'unica soluzione funzionante è con JQuery, il browser –

-3

Hey Penso che si desidera come come questo

Css

div h2{ 
font-weight:bold; 
    color:red; 
} 



ul ~ h2{ 
color:green; 
} 

Demo online http://jsfiddle.net/rohitazad/JxST8/4/

+3

Questo è lo stile 'h2' che è _after_ il' ul', non prima di esso :) – djlumley

+1

puoi styling di h2 come te e ora prima di ul per creare lo styling come semplice .......... –

+1

Come dice djlumley http://jsfiddle.net/JxST8/5/. – kubedan

0

si dovrebbe usare questa

div h2::nth-child(2) { 

} 
+1

non lo fa supporta questo .. speciale alphanyx

+1

Nel mio contenuto ci sono molto più 'h2s' e molto più' uls' quindi la soluzione dovrebbe essere più universale. – user1292810

-3

È possibile utilizzare il fratello generale selettore ~.

Nel tuo caso, è possibile utilizzare h2~ul che verrà applicato a h2 prima dello ul all'interno dello stesso genitore.

+4

Sfortunatamente, non lo farà. Si applicherà a tutti 'h2' _after_' ul' all'interno dello stesso genitore. – djlumley

Problemi correlati