children()忽略页面上的绝对元素

Zed*_*Zed -3 html javascript jquery

我有一个非常具体的情况,我不知道这是可能的.Chrome看到的DOM结构如下所示:

<body>
   <div id="1></div>
   <div id="div2" style="position: absolute; left: 2px; top: 122px; width: 128px; height: 12px;"></div>
   <div id="3"></div>
</body>
Run Code Online (Sandbox Code Playgroud)

因此,具有绝对位置的元素被添加到body元素中.但是,当我尝试用jQuery选择所有正文的孩子时,没有div2,这是有意义的:

$('body').children() // returns div1 and div3
Run Code Online (Sandbox Code Playgroud)

现在,有没有一种方法可以使用jQuery或纯JS来获取浏览器使用children()或任何其他方法看到的所有元素?在这种情况下,我不想要所有3个元素.我真的无法访问网页,我可以注入JS来操纵DOM,所以我正在寻找一个JS解决方案.

Pra*_*man 6

您的代码中有错误:

<div id="1></div>
//--------^
Run Code Online (Sandbox Code Playgroud)

你没有关闭id.因此浏览器将其视为单个div,与"第二个div 相加.所以,如果你正确地给出语法:

$(function () {
  alert($("body").find("div").length);
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="1"></div>
<div id="div2" style="position: absolute; left: 2px; top: 122px; width: 128px; height: 12px;"></div>
<div id="3"></div>
Run Code Online (Sandbox Code Playgroud)

注意:find("div")在上面的示例中给出了代码片段添加更多代码.