除了第一个选择之外的所有CSS3选择器问题

时间:2011-02-21 12:12:02

标签: html css css3 css-selectors

使用以下标记我想要一个CSS选择器来选择除每个选项div中的第一个选择菜单之外的所有菜单 - 其中可能有很多:

<div class="options">
    <div class="opt1">
        <select title="Please choose Warranty">
            <option value="">Select Waranty</option>
            <option value="1">1 year guarantee</option>
            <option value="2">3 year guarantee</option>
        </select>
    </div>
    <div class="opt2">
        <select title="Please choose Color">
            <option value="">Select Color</option>
            <option value="1">Red</option>
            <option value="2">Blue</option>
        </select>
    </div>
    <div class="opt3">
        <select title="Please choose Size">
            <option value="">Select Size</option>
            <option value="1">Small</option>
            <option value="2">Big</option>
        </select>
    </div>
</div>

我在Prototype中使用它,它几乎拥有完整的css3选择器支持,因此不关心浏览器支持。

初始选择器类似于:

div.options div select

我在nth-child:not(:first-child)上尝试了一些变体,但似乎无法使其发挥作用。

4 个答案:

答案 0 :(得分:114)

请参阅:http://jsfiddle.net/uDvEt/1/

.options > div:not(:first-child) select { background:yellow;}

答案 1 :(得分:43)

使用div时,您需要选择select选项而不是:not(:first-child),因为每个select都是其父级的第一个(也是唯一的)子级div

div.options > div:not(:first-child) > select

:not(:first-child)的替代方法是使用:nth-child(),起始偏移量为2,如下所示:

div.options > div:nth-child(n + 2) > select

另一个替代方案是使用通用兄弟组合器~(IE7 +支持):

div.options > div ~ div > select

答案 2 :(得分:0)

.options > div:nth-child(n+2) select

答案 3 :(得分:-1)

.options > *:not(:first-child)

最好的!