2016-02-05 59 views
0

我有一種方法來選擇(使用css)第n個孩子從具有某一類的元素。例如,對於以下內容,我如何選擇li元素與id="this"(出於解釋目的顯示)?所以基本上我想說從元素的第二個元素與class="selected"css第n個孩子從元素與類

<ul> 
    <li></li> 
    <li class="selected"></li> 
    <li></li> 
    <li id="this"></li> 
    <li></li> 
    <li></li> 
    <li></li> 
</ul> 
+1

不,「n-child」不能這樣工作。它根據其父母下方的索引對孩子進行編號。你可以爲那個第二個元素寫'.selected + li + li',但如果它說第八個孩子變得太多了。 – Harry

+0

除了使用js之外,還有其他方法可以做到這一點嗎? – user1009698

回答

4

其實你可以用+選擇做。這有點髒,但適用於你的情況。所有你需要的是知道你需要的元素的確切位置。

.selected + li + li(添加+ li儘可能多的時間,因爲你需要)

+1

你爲什麼覺得它很髒?這是'*'製作的。 – BoltClock

+0

可能實際上工作,因爲它總是第二我需要一個元素與選定的類後。謝謝,生病給我一個機會 – user1009698

+0

@BoltClock因爲如果位置不是第二個方式太多的代碼,並且它對DOM更改非常敏感。我寧願考慮如何做得更清楚,更好的定製 –

3

您可以使用組合子來選擇一個元素相對於另一個元素(我將把這裏作爲參考元素)。

在這種情況下,只要你想li.selected後的第二個兄弟姐妹,你需要兩個元素挺身而出,用兩個+兄弟組合子:

li.selected + li + li 

如前所述,您將需要重複+ liñ times to reach n th following following sibling of your reference element(see also this related answer)。沒有n-sibling組合器,並且:nth-child()不適用於相對選擇器。

+0

榮譽太:)謝謝 – user1009698

+0

這個怎麼樣@BoltClock,我可以做同樣的和之前選擇的元素?或者更好,有沒有辦法做到這一點? – user1009698

+0

@ user1009698:不幸的是,[沒有上一個兄弟選擇器(http://stackoverflow.com/questions/1817792/is-there-a-previous-sibling-css-selector)。 – BoltClock