2010-09-15 40 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