2009-07-15 173 views
65

这将选择所有<B>标签直接之前通过<A>标签:选择了一个标签,随后直接另一个标签

A+B { 
    /* styling */ 
} 

选择所有<A>标签直接其次通过<B>标签是什么?

这里的样本HTML配合我的问题:

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

皮斯给我们一个DOM例子,如何A``和` B'相关。 – Gumbo 2009-07-15 16:38:11

+2

他们是相关的,他们是兄弟姐妹,而B跟随着A.OP想要选择所有`b`s,其后是`a`s,类似于`a + b`,您可以在其中选择所有` b'直接由`a`开头。 – Anthony 2012-04-07 02:38:59

+0

2.5年后,这个答案有没有更新?我也期待以b为后面的目标。 – chovy 2018-02-09 16:49:17

回答

21

你在CSS不能。

编辑:为了更有帮助,如果您使用例如jQuery(JavaScript库),您可以使用.prev()

+0

它使用JavaScript接口唯一的解决方案 – 2009-07-15 16:44:05

50

你的意思是风格因为它直接有一个B元素里面或后面?像这样:

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

// OR 

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

你不能在CSS(还)中做这样的事情。 Eric Meyer表示,这种选择器已经在CSS邮件列表中讨论了很多次,并且不可行。 Dave Hyatt是WebKit核心开发人员之一,他为解释为什么无法完成这个问题给出了很好的解释。

退房:Shaun Inman's blog postcomment by Eric Meyer
David Hyatt weighs in

7

您只能进行相反的处理:这将选择所有直接位于标记之前的标记。

这在逻辑上等同于您的请求。

我经常用这个样式很多复选框的一排标签

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> 
相关问题