jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)


Posted in Javascript onMay 23, 2012

浮动布局:即HTML结构的列,是用浮动方式。

一、功能分析:

1.判断图片是否进入可视区域;

2.用AJAX请求服务器数据;

3.将数据播入到相应的列队;

二、实现方法:

给window的scroll事件l绑定一个处理函数:做如下工作:

1.如何判断最后一行的图片,是否进入了可视区域?

如果:最后一行的某个图片距离浏览器可视区域顶部的距离值 小于 (可视区域的高度+滚动条滑动的距离值);

那么:就可以判定这个图片进入了浏览器的可视区域;

2.如何用AJAX请求服务器数据;

$.getJSON()方法,直接请求JSON格式的数据;

3.将数据播入到相应的列队;

使用$.each循环,将对应的JSON数据入到对应的列当中

$(function(){ 
//判断每个UL的最后一个LI,是否进入可视区域 
function see(objLiLast){ 
//浏览器可视区域的高度 
var see = document.documentElement.clientHeight; 
//滚动条滑动的距离 
var winScroll = $(this).scrollTop(); 
//每个UL的最后一个LI,距离浏览器顶部的 
var lastLisee = objLiLast.offset().top 
return lastLisee < (see+winScroll)?true:false; 
} 
//是否请求出AJAX的“开关”; 
var onOff = true; 
$(window).scroll(function(){ 
//拖动滚条时,是否发送AJAX的一个“开关” 
$("ul").each(function(index, element) { 
//引用当前的UL 
var ulThis = this; 
//引用最后一个LI 
var lastLi = $("li:last",this); 
//调用是否进入可视区域函数 
var isSee = see(lastLi); 
if(isSee && onOff){ 
onOff = false; 
//发送AJAX请求,载入新的图片 
$.getJSON("test1.js",function(data){ 
//对返回JSON里面的list数据遍历 
$.each(data.list,function(keyList,ovalue){ 
//对LIST里面的SRC数组遍历,取到图片路径 
$.each(ovalue,function(keySrc,avalue){ 
$.each(avalue,function(keysrc1,value1){ 
var imgLi = $("<li><a href=''><img src='" + value1 + "' alt='' /><p>11111</p></a></li>") 
$("ul").eq(keysrc1).append(imgLi); 
}) 
}) 
onOff = true; 
}) 
}) 
} 
}); 
}) 
})

三、注意事项

当在执行AJAX请求的时候,是有数据在传输,所以需要一定的时间,才能获得返回的jSON数据。(有了数据,才能向UL中插入LI)而这个时候,如果用户又一次拖动滚动条,那么上面代码的isSee 还是返回true;所以又会执行AJAX请求。这里我们就需要手动设置一个“开关”,来控制。

只有当数据加载完成后,并且都添加进了对应的UL之后,再次拖动时,打开这个“开关”,即onOff设为true;,

因为数据加载完成后,意味着每列的UL里面,在最后面又多出了刚通过AJAX添加进来的LI数据,所以可以有再次的AJAX请求。

DEMO下载(这个要在本地机器上安装服务器平台。我用的是PHP套装APPSERV,里面的是APACHE)

Javascript 相关文章推荐
JavaScript 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
Oct 11 Javascript
javascript中创建对象的三种常用方法
Dec 30 Javascript
jQuery Ajax异步处理Json数据详解
Nov 05 Javascript
JavaScript实现的简单幂函数实例
Apr 17 Javascript
jQuery序列化表单成对象的简单实现
Nov 29 Javascript
jQuery 获取select选中值及清除选中状态
Dec 13 Javascript
5种JavaScript脚本加载的方式
Jan 16 Javascript
JS常用正则表达式总结【经典】
May 12 Javascript
js模块加载方式浅析
Aug 12 Javascript
JS实现移动端整屏滑动的实例代码
Nov 10 Javascript
vue双向数据绑定知识点总结
Apr 18 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
Sep 11 Javascript
Javascript 面向对象(三)接口代码
May 23 #Javascript
Javascript 面向对象(二)封装代码
May 23 #Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
May 23 #Javascript
Javascript 闭包引起的IE内存泄露分析
May 23 #Javascript
基于jQuery的图片左右无缝滚动插件
May 23 #Javascript
判断多个input type=file是否有已经选择好文件的代码
May 23 #Javascript
jQuery 1.7.2中getAll方法的疑惑分析
May 23 #Javascript
You might like
WordPress中用于创建以及获取侧边栏的PHP函数讲解
2015/12/29 PHP
PHP文件操作实例总结
2016/09/27 PHP
thinkPHP模板中for循环与switch语句用法示例
2016/11/30 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
2010/07/24 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
2015/07/21 Javascript
微信小程序 获取设备信息 API实例详解
2016/10/02 Javascript
AngularJS入门示例之Hello World详解
2017/01/04 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
2017/01/17 Javascript
Three.js基础学习之场景对象
2017/09/27 Javascript
js实现扫雷小程序的示例代码
2017/09/27 Javascript
AngularJs分页插件使用详解
2018/06/30 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
vue实现文字加密功能
2019/09/27 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
2020/02/07 Javascript
vue实现购物车加减
2020/05/30 Javascript
[05:59]2018DOTA2国际邀请赛寻真——只为胜利的Secret
2018/08/13 DOTA
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
Python数据结构之栈、队列的实现代码分享
2017/12/04 Python
Python 机器学习库 NumPy入门教程
2018/04/19 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
2018/05/18 Python
python 使用pandas计算累积求和的方法
2019/02/08 Python
Python 隐藏输入密码时屏幕回显的实例
2019/02/19 Python
python实现通过flask和前端进行数据收发
2019/08/22 Python
Python中__repr__和__str__区别详解
2019/11/07 Python
Python中Qslider控件实操详解
2021/02/20 Python
SHEIN香港:价格实惠的女性时尚服装
2018/08/14 全球购物
英国外籍人士的在线超市:British Corner Shop
2019/06/03 全球购物
优秀应届生推荐信
2013/11/09 职场文书
2013年研究生毕业感言
2014/02/06 职场文书
国际贸易专业个人职业生涯规划
2014/02/15 职场文书
北京申奥口号
2014/06/19 职场文书
民事诉讼代理委托书
2014/10/08 职场文书
武当山导游词
2015/02/03 职场文书
自主招生英文自荐信
2015/03/25 职场文书
小学生节水倡议书
2015/04/29 职场文书