2009-07-15 9 views
65

Ceci permet de sélectionner toutes les balises <B> directement par <A> ont précédé tags:Sélecteur pour une étiquette directement suivi par une autre balise

A+B { 
    /* styling */ 
} 

Quel est le sélecteur pour tous les <A> balises directement suivi par <B> balises?

montage HTML est ici exemple ma question:

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

Nous vous invitons à nous donner un exemple DOM comment 'A' et' B' sont liés. – Gumbo

+2

Ils sont liés en ce sens qu'ils sont frères et sœurs, et B est suivi de A. L'OP veut sélectionner tous les 'b's qui sont suivis par' a's, similaire à 'a + b' où vous pouvez sélectionner tout' b's qui sont précédés directement par 'a'. – Anthony

+0

2,5 ans plus tard, y a-t-il une mise à jour de cette réponse? Je cherche aussi à cibler un suivi de b. – chovy

Répondre

21

Vous ne pouvez pas css. Pour être plus utile, si vous utilisez par exemple jQuery (une bibliothèque JavaScript), vous pouvez utiliser .prev().

+0

il semble la seule solution en utilisant JavaScript –

+2

Je pense ainsi, sauf si vous pouvez changer l'ordre de A et B ... – jeroen

+2

Merci jeroen! Cela a réglé mon problème. Puisque mon "A" flotte à gauche et que "B" flotte à droite, peu importe l'ordre dans lequel j'ai mis le balisage. – BobRodes

-9

Vous pourriez, mais le support est toujours bogué. Le nom de c'est le sélecteur de frères et soeurs à côté

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

+0

Ceci est pour sélectionner un élément B qui est précedé par un élément A. Mais la question est "sélecteur pour sélectionnant Un élément qui suit directement l'élément B, c'est-à-dire l'inverse. – VolkerK

+0

Il le savait déjà, mais il a besoin de l'inverse. La réponse ci-dessous est correcte. – Dykam

+0

C'est le sélecteur de l'OP.Il en veut un qui sélectionne un élément basé sur son frère suivant, pas son frère précédent. – Quentin

50

Voulez-vous dire pour le style A étant donné qu'il a un élément B directement à l'intérieur ou suivi? Comme ceci:

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

// OR 

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

Vous ne pouvez pas faire une telle chose en CSS (pas encore). Eric Meyer déclare que ce type de sélecteur a été discuté à plusieurs reprises sur la liste de diffusion CSS, et n'est pas faisable. Dave Hyatt, l'un des principaux développeurs de WebKit, commente avec une bonne explication pourquoi cela ne peut pas être fait.

Extraction: Shaun Inman's blog post et comment by Eric Meyer.
David Hyatt weighs in, aussi.

+0

je veux dire le second, je comprends le problème merci Nick :) –

7

Vous pouvez SEULEMENT faire l'inverse: Ceci sélectionne toutes les étiquettes directement précédées par des étiquettes.

Ceci est logiquement équivalent à votre demande.

J'utilise souvent ce pour le style d'une rangée de plusieurs cases avec des étiquettes

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> 
Questions connexes