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面向对象的方式实现的弹出层效果代码
Jan 28 Javascript
firefox火狐浏览器与与ie兼容的2个问题总结
Jul 20 Javascript
jQuery帮助之筛选查找 children([expr])
Jan 31 Javascript
JavaScript中数据结构与算法(四):串(BF)
Jun 19 Javascript
jquery获取所有选中的checkbox实现代码
May 26 Javascript
js获取客户端操作系统类型的方法【测试可用】
May 27 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
Oct 13 Javascript
AngularJS中如何使用echart插件示例详解
Oct 26 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
Mar 19 jQuery
js实现图片区域可点击大小随意改变(适用移动端)代码实例
Sep 11 Javascript
Node.js API详解之 querystring用法实例分析
Apr 29 Javascript
jQuery实现简单弹幕制作
Dec 10 jQuery
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
PHP4实际应用经验篇(8)
2006/10/09 PHP
php discuz 主题表和回帖表的设计
2009/03/13 PHP
PHP程序员基本要求和必备技能
2014/05/09 PHP
smarty内置函数config_load用法实例
2015/01/22 PHP
php简单操作mysql数据库的类
2015/04/16 PHP
php链表用法实例分析
2015/07/09 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
2016/02/26 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
2017/08/11 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
取得父标签
2006/11/14 Javascript
漂亮的提示信息(带箭头)
2007/03/21 Javascript
Javascript中的数学函数
2007/04/04 Javascript
Javascript下判断是否为闰年的Datetime包
2010/10/26 Javascript
解析jQuery与其它js(Prototype)库兼容共存
2013/07/04 Javascript
JavaScript实现文字与图片拖拽效果的方法
2015/02/16 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
jquery+css实现绚丽的横向二级下拉菜单-附源码下载
2015/08/23 Javascript
jQuery实现的手机发送验证码倒计时效果代码分享
2015/08/24 Javascript
jquery zTree异步加载简单实例讲解
2016/02/25 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
2016/04/12 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
2016/06/15 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
微信小程序实战之轮播图(3)
2017/04/17 Javascript
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
详解python调度框架APScheduler使用
2017/03/28 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
python实现图书馆研习室自动预约功能
2018/04/27 Python
python如何读取bin文件并下发串口
2019/07/05 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
TensorFlow固化模型的实现操作
2020/05/26 Python
python爬虫使用requests发送post请求示例详解
2020/08/05 Python
Html5与App的通讯方式详解
2019/10/24 HTML / CSS
三好学生自我鉴定
2013/12/17 职场文书
求职信的正确写法
2014/07/10 职场文书
读书笔记格式
2015/07/02 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书