2009-07-15 13 views
65

Questo seleziona tutti <B> tag direttamente preceduto da<A> tags:Selettore per un tag direttamente seguito da un altro tag

A+B { 
    /* styling */ 
} 

Qual è il selettore per tutti i tag <A> direttamente seguita da<B> tag?

Ecco HTML di esempio raccordo mia domanda:

<a>some text</a> 
<b>some text</b> 
+3

Li invitiamo a darci un esempio di come DOM 'A' e' B' sono correlati. – Gumbo

+2

Sono correlati in quanto sono fratelli e B è seguito da A. L'OP vuole selezionare tutti i 'b' seguiti da' a's, simile a 'a + b' dove puoi selezionare tutto' b's che sono preceduti direttamente da 'a'. – Anthony

+0

2.5 anni dopo, c'è qualche aggiornamento a questa risposta? Sto anche cercando di targetizzare un seguito da b. – chovy

risposta

21

Non è possibile in css.

Edit: Per essere un po 'più utile, se si utilizza ad esempio jQuery (una libreria JavaScript), è possibile utilizzare .prev().

+0

sembra l'unica soluzione utilizzando JavaScript –

+2

Penso di sì, a meno che non sia possibile modificare l'ordine di A e B ... – jeroen

+2

Grazie jeroen! Questo ha risolto il mio problema. Dato che la mia "A" fluttua a sinistra e "B" galleggia a destra, non importa quale ordine inserisco il markup. – BobRodes

-9

Si potrebbe, ma il supporto è ancora buggato. Il nome che è il selettore fratello adiacente

http://reference.sitepoint.com/css/adjacentsiblingselector

+0

Questo è per selezionare un elemento B che è _preceded_ da un elemento A. Ma la domanda è "selettore per selezionando un elemento che _ ha seguito direttamente_ con l'elemento B ", ovvero il contrario. – VolkerK

+0

Lo sapeva già, ma ha bisogno dell'inverso. La risposta qui sotto è corretta. – Dykam

+0

Questo è il selettore che l'OP ha.Ne vuole uno che seleziona un elemento in base al fratello successivo, non al fratello precedente. – Quentin

50

cosa si intende per lo stile Un dato che ha un elemento di B direttamente all'interno o seguita? In questo modo:

<A> 
    <B> 
    </B> 
</A> 

// OR 

<A> 
</A> 
<B> 
</B> 

Non è possibile fare una cosa del genere nei CSS (ancora). Eric Meyer afferma che questo tipo di selettore è stato discusso diverse volte sulla mailing list CSS, e non è fattibile. Dave Hyatt, uno dei principali sviluppatori di WebKit, commenta con una buona spiegazione del perché non può essere fatto.

Check out: Shaun Inman's blog post e comment by Eric Meyer.
David Hyatt weighs in, anche.

+0

intendo il secondo, capisco il problema grazie nick :) –

7

È possibile eseguire SOLO il contrario: seleziona tutti i tag preceduti direttamente dai tag.

Questo è logicamente equivalente alla richiesta.

Io uso spesso questo per lo stile di una fila di molte caselle di controllo con le etichette

CSS:

label+input { 
    margin-left: 4px; 
} 

DOM:

<input id="a" name="a" type="checkbox"/><label for="a">...</label> 
<input id="b" name="b" type="checkbox"/><label for="b">...</label> 
<input id="c" name="c" type="checkbox"/><label for="c">...</label> 
Problemi correlati