JQuery实现页面随滚动条滚动而动态加载内容的效果

来源:互联网 发布:sql外连表exists 编辑:程序博客网 时间:2024/04/27 14:12
JQuery实现页面随滚动条滚动而动态加载内容的效果
2011-01-16 21:13

      新浪微博有这个功能,刚才思考一下 ,简单的写了一下实现方法,代码是Js的.

      无可否认,这种方式应该算是web2.0的产物,在用户体验上具备很好的感受,除了微博在使用该方式外,另外我还发现有几个其他性质的网站也在用这种方式,原因是他们的网站页面比较长,所以用户在浏览的时候随着滚动条的拖拽而不断加载新的内容到浏览器内,虽然体验会不错,但是我感觉这种方式对搜索引擎的友好性将会降低.欢迎转载但请注明出处Email:See7di@Gmail.com,Seven的部落格http://hi.baidu.com/see7di

      所以除非不得已我是不会使用这种方式的,就目前来看我的作品内我还没发现哪个程序需要使用这种方式.

      不过不论如何,创新就是一种进步,难道不是吗?

下边的代码是直接使用javascript来实现:
window.onscroll = function(){
var water = document.getElementById("water");
water.style.top = (document.documentElement.scrollTop|document.body.scrollTop)+'px';
water.innerHTML = "scrollTop:" + (document.documentElement.scrollTop|document.body.scrollTop) + "<br/>ClientHeight:" + document.documentElement.clientHeight + "<br/>scrollHeight:" + document.documentElement.scrollHeight;

//滚动条在最底端的时候 
if (document.documentElement.scrollHeight == (document.documentElement.scrollTop|document.body.scrollTop)+document.documentElement.clientHeight) {
//到最底端去请求新数据
var table=I.$('tag','table')[0];
var start=parseInt(table.rows[table.rows.length-1].cells[0].innerHTML)+1;;
var length=10;
var param='start='+start+'&length='+length;
I.AJAX.post('/test2/DataServlet',param,function(o){
var persons=I.AJAX.json(o.responseText);
//加载新的十行数据
for(var i=0;i<persons.length;i++){
var row=table.insertRow(table.rows.length);
row.insertCell(0).innerHTML=persons[i].id;
row.insertCell(1).innerHTML=persons[i].name;
row.insertCell(2).innerHTML=persons[i].age;
row.insertCell(3).innerHTML=persons[i].hoppy;
}
//删除前十行数据
for(var i=0;i<10;i++){
table.deleteRow(1);
}
window.scroll(0,parseInt(document.documentElement.scrollTop)-15);//设置滚动条的位置
}); 
}

//滚动条在最顶端的时候
if((document.documentElement.scrollTop|document.body.scrollTop)==0){

var table=I.$('tag','table')[0];

var e=table.rows[1].cells[0].innerHTML;
if(e!='0'){
var s=parseInt(e)-10<0?0:parseInt(e)-10;
var param='start='+s+'&length=10';
I.AJAX.post('/test2/DataServlet',param,function(o){
var persons=I.AJAX.json(o.responseText);
//加载新的十行数据
for(var i=0;i<persons.length;i++){
var row=table.insertRow(i+1);
row.insertCell(0).innerHTML=persons[i].id;
row.insertCell(1).innerHTML=persons[i].name;
row.insertCell(2).innerHTML=persons[i].age;
row.insertCell(3).innerHTML=persons[i].hoppy;
}
//删除后十行数据
for(var i=0;i<10;i++){
table.deleteRow(table.rows.length-1);
}
window.scroll(0,15);//设置滚动条的位置
}); 
}
}

下边的代码是使用Jquery来实现:
//感应滚动条的高度载入新内容
$(window).scroll(function(){
aa=parseInt($(document).height()); //获取文档的高度
oo=parseInt($(document).scrollTop()); //获取滚动条到顶部的垂直高度

if((aa-oo)<800){
if(!window.ia){
ia=1;
$.post("sys.php",{work:"hotels",s:('a=c+d 中国e+f&g>h')},function(msg){//用ajax即时获取伺服器上的资料
if(msg.length>0){
$("#index #tab5 #tab19").last().after(msg);
ia=null;
}else{
$("#index #div2").last().remove();
$("#index #tab5 #tab19").last().after('<span>Error:没有搜寻到任何结果,请尝试更换搜寻条件!</span>');
}
});
}
}
});

扩展阅读:
Jquery插件 - 可以随着滚动条的滚动而即时加载图片
http://hi.baidu.com/see7di/blog/item/3d698352fd0fee170cf3e381.html