2010-09-15 98 views
1

我试图仅在<dd>之后跟踪<dt>。我知道有一个前面的选择器,但是我找不到一个定位<dt>的CSS方法。我知道这可以通过JavaScript来实现,但如果可能的话,宁愿将它保留在CSS选择器中。CSS选择器 - 仅在跟随DD时才跟踪目标DT

这不必在IE6或更低版本中运行。

+0

http://stackoverflow.com/questions/1817792/css-previous-sibling-selector – 2010-09-15 17:38:19

+0

另外,我要指出,'dd'应该由'dt'之前。 – 2010-09-15 17:41:48

+0

阅读完链接的问题后,我仍然没有解决方案。如前所述,我知道你可以在一个元素的前面加上另一个元素;然而,我只需要在元素后面跟着一个元素。 – 2010-09-16 15:07:21

回答

-3

你想要的兄弟选择:

DT + DD { color : #00f; } 

不工作在IE6,但不会在其他浏览器。

+1

这可以用其他方法。 DD之前是DT。 – 2010-09-15 17:42:12

+0

很好,然后用DD + DT {color:#00f;}代替 – furtive 2010-09-15 18:06:12

+0

当DD开头时,它将以DT为目标。我正在寻找以DT为后续目标的DT。 – 2010-09-16 14:06:19

1

我想也许dt〜dd会工作,但它实际上功能类似于+,只是不太具体。

看过W3C css选择器文档http://www.w3.org/TR/CSS2/selector.html之后,我可以很有信心地说,你只想用CSS来做你想做的事。它也缺少获取父选择器的方法。也许在CSS4 ...

0

我正在寻找一个类似的问题类似的解决方案。在我的情况下,我想选择dd组中的最后一个dd,因此所有dd之后是dt或者是dl的第一个孩子(因为,无论出于何种原因,这都是允许的)。

我还没有找到纯粹的CSS解决方案。我正在制定多条规则,以保持所有这些将会(在你的情况下)“空”dt,但没有什么包容性。

如果我得到这个工作,我会让你知道。否则,类似于选择器的解决方案(因此保持任何其他选择器语法不变)是jquery non-css :has()选择器。所以你的情况:

$("dt:not(:has(+dd))").addClass("empty_def"); 
$("dt:has(+dd)").addClass("non_empty_def"); 
+1

“因此,因此任何”dd“都是......”dl“的第一个孩子”除非它后面跟着另一个“dd”...... – BoltClock 2012-04-07 02:54:17

+0

@ BoltClock'saUornorn - 好的呼叫。 – Anthony 2012-04-07 04:18:31