2010-09-16 73 views
2

我試圖跨越多個頁面(div)設置在950px每格的高度的內容,所以我可以正確輸出爲pdf。jQuery:如何獲取不可見的溢出內容:隱藏?

我從一個使用overflow隱藏所有內容的div開始:hidden。理想情況下,我想使用jQuery來查找超出查看範圍(隱藏)的內容,但我看不到任何功能來執行此操作。 $ ...(':visible')只適用於display:none或visibility:hidden ...

這些頁面上的內容是基本的html標記(p,br,ol,ul,li,h1,h2 )。我已經嘗試了循環這些子元素並從頂部找到它們的偏移路線。這樣做的問題是,當你試圖測量當後續頁面具有可變內容高度時,元素的遠端被循環到頁面的頂部時,它變得非常混亂和複雜(每個頁面內有一個標題塊,高於內容)。

想法?

回答

5

,需要在每個元件的位置進行比較,以在文檔的高度(body):

if ($("#elementOne").position().top > $("body").height()){ 
    // This element is hidden 
} 

這個例子掃描每個元件和構建元件的陣列被隱藏(完全地):

var h = $("body").height(); 
var hiddenEls = new Array(); 

$("#container").find("*").each(function(){ 
    if ($(this).position().top > h) 
     hiddenEls.push($(this)); 
}); 

請注意,這是未經測試的。

嘗試這個例子:

http://jsfiddle.net/wMPjJ/

藍色容器被設置成在高度400px,與溢流隱藏。在div中,有22 p元素,編號從1到22.有些將被隱藏(它們不適合)。頁面上的代碼會告訴你隱藏了多少元素(對於我來說,我得到5; p標籤17到22沒有出現)

+0

不是'.position()'表示它是相對於定位容器? – 2010-09-16 22:00:39

+0

@Floyd Pink;是的,你是對的。但是,在這種情況下,這並不重要,因爲提交者只想檢測被容器div隱藏的元素,其'overflow'被設置爲'hidden'。如果整個頁面本身具有隱藏溢出的設置高度,那麼您將使用'offset()'而不是'position()'。 – 2010-09-16 22:09:36

相關問題