2010-09-16 86 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