Положение прокрутки в теле таблицы - PullRequest
0 голосов
/ 23 апреля 2010

Я хочу реализовать бесконечную прокрутку (с загрузчиком на основе AJAX) в теле таблицы HTML.

Мой HTML выглядит примерно так:

<table>
  <thead>
    <tr><th>Column</th></tr>
  </thead>
  <tbody>
    <tr><td>Row 1</td></tr>
    <tr><td>Row 2</td></tr>
  </tbody>
</table>

Я получаю полосу прокруткина <tbody> примерно так:

tbody {
  height:10em; /* Otherwise the tbody expands to fit all rows */
  overflow:auto;
}

Чтобы иметь возможность что-либо делать, когда пользователь прокручивает страницу вниз, мне нужно иметь возможность получить позицию прокрутки <tbody>.Во всех (jQuery) реализациях бесконечной прокрутки, которые я видел (, таких как эта ), они вычитают высоту содержимого из высоты контейнера и сравнивают ее со значением .scrollTop ().

К сожалению, это может не работать с <tbody>, который является одновременно и окном просмотра и контейнером для прокручиваемого содержимого.$("tbody").height() возвращает видимый (то есть "уменьшенный") размер, но я не знаю, как получить полный (видимый + скрытый) размер тела таблицы.(FWIW, $("tbody").scrollTop() возвращает «большое» число при прокрутке вниз, именно так, как я и ожидал).

Есть ли способ сделать это?

Ответы [ 2 ]

1 голос
/ 01 сентября 2010

tbody.scrollHeight у меня работает.

1 голос
/ 15 мая 2010

Когда вам нужна скрытая высота, вы можете установить высоту автоматически, захватить ее, а затем вернуть высоту к принудительному размеру.

var $tbody = $('tbody');
var initTbodyHeight = $tbody.height();
$tbody.css('height','auto');
var autoTbodyHeight = $tbody.height();
$tbody.css('height',initTbodyHeight);

Даже IE должен обрабатывать это достаточно быстро, без видимого мерцаниячеловеческие глаза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...