JQuery: Как получить содержимое не видимым с переполнением: скрытый? - PullRequest
2 голосов
/ 17 сентября 2010

Я пытаюсь распределить контент по нескольким страницам (div), установленным на высоте 950px на div, чтобы я мог правильно выводить в pdf.

Я начинаю с одного div, который вкладывает весь контент, используя overflow: hidden.В идеале я хотел бы использовать jquery для поиска контента, который находится вне области просмотра (скрыт), но я не вижу никакой функциональности, чтобы сделать это.$ ... (': visible') относится только к отображению: нет или видимости: скрыто ...

Содержимое на этих страницах является базовой разметкой html (p, br, ol, ul, li, h1х2).Я пробовал маршрут зацикливания этих дочерних элементов и определения их смещения сверху.Проблема в том, что это становится очень запутанным и сложным, когда вы пытаетесь измерить удаленность зацикленного элемента до верхней части страницы, когда последующие страницы имеют переменную высоту содержимого (на каждой странице есть блок заголовка, которыйвыходит за рамки содержания).

Идеи?

1 Ответ

5 голосов
/ 17 сентября 2010

Вам необходимо сравнить положение каждого элемента с высотой документа (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 * ​​1021 * элементов, пронумерованных от 1 до 22. Некоторые из них будут скрыты (они не подходят).Код на странице скажет вам, сколько элементов скрыто (для меня я получаю 5; p теги с 17 по 22 не отображаются)

...