页面滚动到底部自动加载下一页功能的实现
2015-12-07 15:40
676 查看
页面滚动到底部自动加载下一页功能的实现,效果见本博首页
1、endlesspage.js文件内容
2、界面调用
1、endlesspage.js文件内容
var gPageSize = 10; var i = 1; //设置当前页数,全局变量 var finished = false; var dataUrl = ''; $(function () { //根据页数读取数据 function getData(pagenumber) { //console.log(i); $.get(dataUrl, { pagesize: gPageSize, p: pagenumber }, function (data) { //if (data.length > 0) { //var jsonObj = JSON.parse(data); jsonObj = data.info; insertDiv(jsonObj); //} }); $.ajax({ type: "post", url: dataUrl, data: { pagesize: gPageSize, p: pagenumber }, dataType: "json", success: function (data) { $(".loading").hide(); if (data.length > 0) { //var jsonObj = JSON.parse(data); jsonObj = data.info; insertDiv(jsonObj); } }, beforeSend: function () { $(".loading").show(); }, error: function () { $(".loading").hide(); } }); i++; //页码自动增加,保证下次调用时为新的一页。 } //核心代码 var winH = $(window).height(); //页面可视区域高度 var scrollHandler = function () { var pageH = $(document.body).height(); var scrollT = $(window).scrollTop(); //滚动条top var aa = (pageH - winH - scrollT) / winH; if (!finished && aa < 0.2) { //0.02是个参数 if (i % 10 === 0) { //每10页做一次停顿 getData(i); $(window).unbind('scroll'); $("#btn_Page").show(); } else { getData(i); finished = true; setTimeout(function(){finished = false;},500); $("#btn_Page").hide(); } } } //初始化加载第一页数据 getData(1); //定义鼠标滚动事件 $(window).scroll(scrollHandler); //继续加载按钮事件 $("#btn_Page").click(function () { getData(i); $(window).scroll(scrollHandler); }); });
2、界面调用
<script src="__PUBLIC__/Js/endlesspage.js"></script> <script type="text/javascript"> dataUrl = "/Home/Index/index2"; //生成数据html,append到div中 function insertDiv(jsonData) { var $mainDiv = $(".articleList"); var html = ''; for (var i = 0; i < jsonData.length; i++) { html += '<div class="panel panel-success">'; html += '<div class="panel-heading"><h4 class="panel-title"><button type="button" class="btn btn-danger btn-sm"><i class="fa fa-bar-chart-o fa-fw">' + jsonData[i].visitNums + '</i></button> <a href="/Home/Article/detail/id/' + jsonData[i].id + '">' + jsonData[i].title + '</a></h4></div>'; html += '<div class="panel-body"><p>' + jsonData[i].summary + '</p></div>'; html += '<div class="panel-footer"> <em class = "pull-right"> ' + jsonData[i].channelName + ' </em><em>最后更新: ' + date('Y-m-d H:i:s', jsonData[i].update_time) + ' </em></div>'; html += '</div>'; } $mainDiv.append(html); } </script>
相关文章推荐
- Android通过剪切板传递数据
- python编程基础:《http://www.cnblogs.com/wiki-royzhang/category/466416.html》
- linux常用命令
- VSTO出现An error occurred while signing: 指定了无效的提供程序类型
- Android——蓝牙通信
- 中国计算机学会推荐国际学术刊物 (人工智能与模式识别)
- 12.7 数据仓库课
- getSharedPreferences()与getSharedPreferences()与getDefaultSharedPreferences()的区别
- 状态模式
- 1054. The Dominant Color (20)【水题】——PAT (Advanced Level) Practise
- 无限风光 : 近来地形算法学习小结
- Twitter架构
- CentOS 6.0如何安装配置Kamailio
- 14.15 InnoDB Backup and Recovery Innodb备份和恢复
- 中国计算机学会推荐国际学术期刊 (计算机图形学与多媒体)
- Oolong and Gnoloo
- 嵌入式C的十六个问题的中英文版
- 自定义Android progress bars
- 判别分析-GDA、QDA、KNN
- Makefile经典教程(转载)