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方法提供支撑。具体原因可以理解!