的內容的網頁我有像這樣的簡單數據網格:負載和刪除根據滾動方向和高度
<div class="uiGridContent">
<table>
<tbody id="page-1">
<tr>
<td>Cell 1</td>
<td>Cell 2</td>
<td>Cell 3</td>
</tr>
</tbody>
</table>
</div>
*注意我在單獨的表頁眉和頁腳中的div上方和uiGridContent下面DIV。這個例子不是必需的。
var nextPage = 1, lastScrollTop = 0, st;
$('.uiGridContent').scroll(function(){
var st = $(this).scrollTop();
// We're scrolling down
if (st > lastScrollTop){
if($('.uiGridContent').scrollTop() + $('.uiGridContent').innerHeight() >= $('.uiGridContent')[0].scrollHeight && nextPage < 10) {
$.ajax({
url: '<?php echo $appurl; ?>?page=' + nextPage,
success: function(data) {
nextPage = nextPage + 1;
var content = $(data).find('.uiGrid tbody').html();
$('.uiGridContent tbody').last().after('<tbody id="page-'+nextPage+'">'+content+'</tbody>');
},
error: function(data) {
alert(data);
}
});
}
lastScrollTop = st;
// We're scrolling up
} else {
if($('.uiGridContent').scrollTop() + $('.uiGridContent').innerHeight() >= $('.uiGridContent tbody').last().height()) {
var pageToRemove = $('.uiGridContent tbody').last();
if(pageToRemove.attr('id') != 'page-1') {
pageToRemove.remove(); nextPage = nextPage - 1;
} else {
$('.uiGridContent').scrollTo(0,0);
}
}
lastScrollTop = st;
}
});
的想法是,當用戶向下滾動表時,將在接下來的頁面,當他們到達的gridcontent DIV最後TBODY的底部加載。 工作正常!
問題在於備份滾動。如果計劃是爲了讓這個當用戶滾動備份過最後一個TBODY再次刪除它,直到他們最終只有一個剩餘TBODY(原來在這種情況下)。實際發生的,一旦是因爲他們開始滾動起來它消除了所有的人,除了第一個,有時錯過了向上滾動,並讓用戶頂端而不刪除所有其他tbodys。
任何想法?我認爲問題在於if語句:
if($('.uiGridContent').scrollTop() + $('.uiGridContent').innerHeight() >= $('.uiGridContent tbody').last().height()) {
下的向上滾動部分。