我想得到父母的第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之前被关闭,并在之后再次打开?
答案 0 :(得分:0)
这应该有效:
alert(
$($('#myDiv > *')[2]).html()
);
答案 1 :(得分:0)
为什么段落在div之前被关闭,并在之后再次打开?
因为段落不能包含div元素(更准确地说,我认为段落不能包含块元素)。浏览器通过关闭div之前的段落来纠正您的无效(!)标记。