jquery滾動監聽方法如下,
$(window).scroll(function(){
var scrollTop = $(this).scrollTop();
var scrollHeight = $(document).height();
var windowHeight = $(this).height();
if(scrollTop + windowHeight == scrollHeight){
alert("you are in the bottom");
}
});
在實際的應用中,比如微博、qq空間等有這樣的效果,打開首頁默認顯示幾條,但我們的鼠標將滾動條下滑到底部時,加載出更多的內容,這個方法是如何實現的?
通關的demo,simple-weibo中有這樣一個要求,個人采用了ajax及jquery的scroll方法一起實現了這個效果,思路如下:
1、設置滾動條監聽事件,如上所示
2、當scrollTop + windowHeight == scrollHeight時,alert替換成ajax方法,從后端返回需要吐出的數據,
具體如下
$.ajax({
type: 'POST',
url: "pub.php",
data:id, //比如首頁默認顯示10條,從param中獲取參數,比如設為1、2、3表示滾動到底部,sql跳過10條取n條。
success: function(data) {
$("#moreinfo").before(data);
history.go(0); //使得顯示的是數據庫中的數據
},
fail: function() {
alert('請求失敗!');
}
});
因為不需要數據,所以ajax方法中沒有提到data,success中的data是從pub.php中返回的數據。
過程中遇到了問題,因為每次到底部時,只加載出了一條消息,因為用的是ajax,此處的DOM是假數據,並未真正存在與HTML中,只有刷新了,顯示的才是從數據庫中取出的數據。另外,因為默認顯示的列表中,為了使得每次加載出的數據都從最下面顯示,我們可以建一個<div id="moreinfo"></div>但是什么也不寫,只是為吐數據的before方法提供支撐。具體原因可以理解!