2013-10-17 193 views
0

我正面临着编写一个稍微复杂的CSS选择器的问题。CSS选择器第n个孩子

我要选择具有“类”包含'btn-group'一个div,但不'open'

所以我有这样的事情;

div[class*='btn-group']:not([class='open']) 

现在的问题是,有大约5-6个元素符合上述条件。但我想选择第一个。我该怎么做呢?

宁愿使用nth-child做..

回答

6

什么:div[class*='btn-group']:not(.open):first-of-type

[编辑]:如果你有<div class="btn-group open"></div>作为第一个孩子...(如下面@Jukka解释)基于JS-招会的工作,寿这招不起作用:

$("div[class*='btn-group']").not(".open").first() 
    .css({...}); 

    // OR add a class 
    // .addClass("class"); 

http://jsfiddle.net/teddyrised/LdDCH/

+0

试过这个...它也选择了多个元素... – testndtv

+0

是的,它工作:http://jsfiddle.net/PMY3s/ – Brewal

+0

它是否工作取决于上下文,但通常它不,因为' :first-of-type'只测试元素是否是其父元素的第一个“div”子元素。 –

2

尝试这样

div [class*='btn-group']:not([class='open']):nth-child(1) { 
    color:Red; 
} 

使用此您可以选择的第一个孩子

Working Fiddle

1

你不行。不能以这种方式使用CSS选择器。但是,如果您提供更具体的HTML上下文(包括div元素的容器以及该标记遵循的模式的描述),则可能有某种方法在某些假设下可用。

特别地,:nth-child:nth-of-type仅测试该元素是否为其父类型的第* n *子或第n *子类。它确实需要而不是。课程考虑在内;这不是“一流的”选择者中的第n个。