2009-07-15 171 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> 
相關問題