2015-09-08 59 views
-3

我有一個非常特殊的情況,我不知道它是可能的。 Chrome的DOM結構看起來像這樣:children()忽略頁面上的絕對元素

<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,一種方式來獲得所有元素的瀏覽器看到他們與孩子()或任何其他方法?在這種情況下,我不想要所有3個元素。我真的沒有訪問網頁,我只能注入JS來操縱DOM,所以我正在尋找一個JS解決方案。

+0

',當我嘗試選擇所有身體的兒童使用jQuery,沒有DIV2,這是有道理的:' - 不,它實際上並不 –

+1

@Tushar那是因爲你固定破碎的HTML。你不能只是改變代碼,然後聲稱它的工作原理。 -.- – Siguza

+0

@Siguza我認爲這是複製粘貼錯誤,同時向問題添加代碼,並且您是否看到問題的標題 – Tushar

回答

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")的片斷增加了更多的代碼。