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

时间:2015-09-08 11:13:47

标签: javascript jquery html

我有一个非常具体的情况,我不知道这是可能的。 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>

因此,具有绝对位置的元素被添加到body元素中。但是,当我尝试用jQuery选择所有身体的孩子时,没有div2,这是有道理的:

$('body').children() // returns div1 and div3

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

1 个答案:

答案 0 :(得分:6)

您的代码中有错误:

<div id="1></div>
//--------^

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

$(function () {
  alert($("body").find("div").length);
});
<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>

  

注意: 我在上面的示例中提供了find("div"),因为该代码段会添加更多代码。