jquery指数一线儿童

时间:2014-01-21 21:53:02

标签: jquery children

我想得到父母的第n个第一级孩子。例如,当我有这样的dom时:

<div id='myDiv'>
    <p>first paragraph</p>
    <p>second paragraph<span>something here</span></p>
    <p>third paragraph</p>
</div>

并使用eq(),如下所示:

alert($('#myDiv').children().eq(2).html());

我得到'这里的东西',但'第三段'是我需要的,因为'这里的东西'是myDiv的第二代孩子,不应该被考虑在内。我知道我会用'&gt;'选择器,但我必须写一个多功能的脚本,它不仅适用于'p'儿童,也适用于'a','li','无论'。希望你明白我的意思。在此先感谢您的帮助

更新

你是对的 - 我的js代码没有任何问题。但是,正如你的建议,我已经查看了我的HTML,并看到那里发生了一些奇怪的事情。我有:

    <div>
<div><span>Option1</span> <span>Option2</span> <span>Option3</span> <span>Option4</span></div>
<div><p>Container1</p> <p><div>abc</div></p> <p>Container3</p> <p>Container4</p></div>
</div>

以及我在浏览器的元素字段中看到的内容:

<div>
<div><span>Option1</span> <span>Option2</span> <span>Option3</span> <span>Option4</span></div>
<div><p>Container1</p> <p></p><div>abc</div><p></p> <p>Container3</p> <p>Container4</p></div>
</div>

为什么段落在div之前被关闭,并在之后再次打开?

2 个答案:

答案 0 :(得分:0)

这应该有效:

alert(
    $($('#myDiv > *')[2]).html()
);

答案 1 :(得分:0)

  

为什么段落在div之前被关闭,并在之后再次打开?

因为段落不能包含div元素(更准确地说,我认为段落不能包含块元素)。浏览器通过关闭div之前的段落来纠正您的无效(!)标记。