2012-12-09 63 views
3

我在jquery的初学者,所以我可能不会了解太多先进的东西,但这里是问题:当我尝试选择nth-child(1),它选择第一个,正如所料(我知道我可以用第一个孩子,但我不喜欢它)。但是,如果更改为nth-child(2),则不会选择任何内容。 nth-child(3)选择Something2,并且nth-child(5)选择something3。这对我来说太过分了!jQuery nth孩子选择跳过数字

<div id="navigation"> 
    <a href="#">Something</a> <br /> 
    <a href="#">Something2</a> <br /> 
    <a href="#">Something3</a> <br /> 
</div> 

<script> 
$('#navigation').find(">:nth-child(1)").css("font-weight", "bold"); 
</script> 
+0

可能是因为它的选择BR标签?什么是低于标志btw? – bozdoz

+0

我在其他一些问题上看到了它。需要吗?猜不是 – davidhin

+0

也许你可以尝试找到所有'a'元素并使用eq()来获得某个元素。 – bozdoz

回答

4

:nth-child(1)应该选择第二个元素,因为您传递的索引是从零开始的。

问题是,您的选择器包含<br />标签,这是预期的(从我的角度来看)。

HTML:

<div id="navigation"> 
    <a href="#">Something</a> <br /> 
    <a href="#">Something2</a> <br /> 
    <a href="#">Something3</a> <br /> 
</div>​ 

的JavaScript:

$('#navigation').children().not('br').eq(1).css("font-weight", "bold");​ 

Live Demo

+0

完美的工作.. + 1 –

+0

公式()是容易去。我认为你应该通过一个标签虽然而不是搜索 – bozdoz

+0

据我所知,只选择一个元素进行搜索可能会更具可读性(我不确定性能比较),但如果OP仅仅使用元素为在SO上展示他的问题的目的,我认为排除你几乎不想包含的元素是有意义的。 –