jQuery:找到前两个孩子

时间:2012-05-18 20:28:06

标签: javascript jquery html css

使用jQuery,如果一个是h1而另一个是p,那么找到父元素的前两个子元素的最有效方法是什么。我的代码现在不能正常工作,我想用最佳实践来实现这一目标。

CSS

div > *{
    display: none;
}

HTML

<div>
    <h1>Heading</h1>
    <p>Paragraph 1</p>
    <p>Paragraph 2</p>
</div>

<div>
    <h1>Heading</h1>
    <p>Paragraph 1</p>
    <p>Paragraph 2</p>
</div>

的Javascript

$('div h1').show();    
$('div p:first-child').show();

编辑我实际上正在使用多个DIV。我认为这不会有所作为,但看起来我错了。

9 个答案:

答案 0 :(得分:21)

尝试,

$('div').children().slice(0,2).show();

如果你有更多的1个div,请尝试如下,

$('div').each (function () {
    $(this).children().slice(0,2).show();
});

答案 1 :(得分:5)

slice()方法的替代方法:

$('div').children(':lt(2)').show()

(但我也推荐切片,特别是对于大型收藏品)

答案 2 :(得分:2)

http://jsfiddle.net/94EU7/

$('div :lt(2)').show();    

答案 3 :(得分:1)

$('div').children().slice(0, 2).show();

答案 4 :(得分:1)

您可以像以下

一样使用less than选择器
$('div > *:lt(2)').show();

Working fiddle

答案 5 :(得分:1)

描述性选择器

$('div').find('h1:first, p:first').show(); 

这清楚地说明了您的意图以及您选择的元素。

答案 6 :(得分:1)

$('div p:first-child,div p:nth-child(2)').show();

答案 7 :(得分:0)

我认为您需要eq()功能,如下所示:

$("div").children().eq(0); // first child
$("div").children().eq(1); // second child

答案 8 :(得分:0)

不确定为什么需要使用jQuery。

var firstChild = div.firstChild;
firstChild.style.display = 'initial';
firstChild.nextSibling.style.display = 'initial';