JQuery页面随滚动条动态加载效果的简单实现(推荐)


Posted in Javascript onFebruary 08, 2017

Google阅读器上有一个AJAX scollLoad效果很不错,就是阅读项目时不需要翻页,浏览器滚动条往下拉到一定位置时自动加载新的一批项目进来,一直到所有项目加载完为止。要知道,数据量增加很频繁时,要通过定位页码来找到目标数据似乎并没有什么意义。我觉得用户体验成熟的WEB应用程序应当引导用户使用TAG或搜索等功能来找到目标数据。至于浏览数据,尤其是浏览最新的数据,利用浏览器滚动条来加载,是很好的尝试……

我试着用jquery来实现这个功能。先要得到滚动条的总长属性值:scrollHeight,还有滚动条当前位置属性值:scrollTop。然后通过计算,若当前值位于总长值三分之二时加载新数据。假设DOM上有一个元素为,该元素overflow样式为scroll,也就是元素中的内容溢出元素指定高度时启用滚动条。利用jquery的load方法为元素加载一个已经存在的文件,我假设它是table.html。这个文件的内容可以是足以使浏览器滚屏的一张数据表。

jquery.js“>// 加载jquery库

var hght=0;//初始化滚动条总长
var top=0;//初始化滚动条的当前位置
$(document).ready(function() {//DOM的onload事件
$(”#mypage”).load(”table.html”);//table.html的内容被加载到 mypage元素

$(”#mypage”).scroll( function() {//定义滚动条位置改变时触发的事件。
hght=this.scrollHeight;//得到滚动条总长,赋给hght变量
top=this.scrollTop;//得到滚动条当前值,赋给top变量
});
});

setInterval(”cando();”,2000);//每隔2秒钟调用一次cando函数来判断当前滚动条位置。

function cando(){
if(top>parseInt(hght/3)*2)//判断滚动条当前位置是否超过总长的2 /3,parseInt为取整函数
show();//如果是,调用show函数加载内容。
}

function show(){
$.get(”table.html”, function(data){//利用jquery的get方法得到table.html内容
$(”#mypage”).append(data);//用append方法追加内容到mypage元素。
hght=0;//恢复滚动条总长,因为$(”#mypage”).scroll事件一触发,又会得到新值,不恢复的话可能会造成判断错误而再次加载……
top=0;//原因同上。
});
}

为什么要隔2秒钟调用一次判断呢?因为只要$(”#mypage”).scroll事件一被触发,就会影hght和top值,这个值可能总是满足cando 函数的判断,也就是top值总是位于hght的三分之二。因此可能会多次加载造成服务器负担加重。而每加载一次后把hght和top值赋0,也是这个原因。

这段代码的效果就是只要元素mypage的滚动条位置位于滚动条总长的三分之二时,追加table.html的内容到元素mypage 中去。当然这样运行是无休止地加载下去。在真正的AJAX运用中,table.html可以换成asp或php脚本,接收get或post参数来进行处理,然后返回有意义的数据。jquery的get方法可以设置get方式的参数数据,

比如:

$.get(”test.php”, { name: “boho”, id: “1″ } );

相当于http://hostlocal/test.php?name=boho&id=1

这种形式的http访问。然后通过get方法的回调函数来获取test.php输出的内容:

$.get(”test.php”, {name:”boho”,id:”1″},function(data){
alert(”Data Loaded: ” + data);
});

以上这篇JQuery页面随滚动条动态加载效果的简单实现(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(2)
Dec 23 Javascript
Jquery 模拟用户点击超链接或者按钮的方法
Oct 25 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
Jul 23 Javascript
js Calender控件使用详解
Jan 05 Javascript
谈谈JavaScript中function多重理解
Aug 28 Javascript
jquery点击展示与隐藏更多内容
Dec 03 Javascript
jQuery在header中设置请求信息的方法
Mar 06 Javascript
JS按钮闪烁功能的实现代码
Jul 21 Javascript
es6中的解构赋值、扩展运算符和rest参数使用详解
Sep 28 Javascript
jQuery 实现批量提交表格多行数据的方法
Aug 09 jQuery
浅谈vue引用静态资源需要注意的事项
Sep 28 Javascript
原生js实现拖拽移动与缩放效果
Aug 24 Javascript
setTimeout学习小结
Feb 08 #Javascript
jquery uploadify如何取消已上传成功文件
Feb 08 #Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
Feb 08 #Javascript
用move.js库实现百叶窗特效
Feb 08 #Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
Feb 08 #Javascript
Move.js入门
Feb 08 #Javascript
jquery ajaxfileupload异步上传插件使用详解
Feb 08 #Javascript
You might like
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
2009/06/08 PHP
PHP 输出缓存详解
2009/06/20 PHP
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
PHP+Mysql基于事务处理实现转账功能的方法
2015/07/08 PHP
PHP无限极分类函数的实现方法详解
2017/04/15 PHP
php/JS实现的生成随机密码(验证码)功能示例
2019/06/06 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
2019/10/11 PHP
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
2012/02/07 Javascript
js 3种归并操作的实例代码
2013/10/30 Javascript
jQuery取得select选择的文本与值的示例
2013/12/09 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
浅谈js的url解析函数封装
2016/06/28 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
2016/09/17 Javascript
JavaScript模仿Pinterest实现图片预加载功能
2016/10/25 Javascript
js 轮播效果实例分享
2016/12/28 Javascript
浅谈angular.copy() 深拷贝
2017/09/14 Javascript
Angular5中提取公共组件之radio list的实例代码
2018/07/10 Javascript
layui获取多选框中的值方法
2018/08/15 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
简单了解微信小程序的目录结构
2019/07/01 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
2019/09/23 Javascript
js 计数排序的实现示例(升级版)
2020/01/12 Javascript
[01:14:12]2018DOTA2亚洲邀请赛4.7 总决赛 LGD vs Mineski 第二场
2018/04/09 DOTA
[01:03:03]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
python从sqlite读取并显示数据的方法
2015/05/08 Python
分享python数据统计的一些小技巧
2016/07/21 Python
Python实现快速计算词频功能示例
2018/06/25 Python
浅谈pytorch和Numpy的区别以及相互转换方法
2018/07/26 Python
python存储16bit和32bit图像的实例
2018/12/05 Python
Python整数对象实现原理详解
2019/07/01 Python
python中下标和切片的使用方法解析
2019/08/27 Python
python操作yaml说明
2020/04/08 Python
Django DRF路由与扩展功能的实现
2020/06/03 Python
基于CSS3 animation动画属性实现轮播图效果
2017/09/12 HTML / CSS
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
介绍一下内联、左联、右联
2013/12/31 面试题