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模拟实现键盘打字效果
Jun 29 Javascript
自动完成的搜索框javascript实现
Feb 26 Javascript
JavaScript SHA512加密算法详细代码
Oct 06 Javascript
常用原生js自定义函数总结
Nov 20 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
Apr 12 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
Dec 08 Javascript
解决vue中修改了数据但视图无法更新的情况
Aug 27 Javascript
vue.js 实现点击按钮动态添加li的方法
Sep 07 Javascript
微信小程序实现下拉菜单切换效果
Mar 30 Javascript
Vue中qs插件的使用详解
Feb 07 Javascript
vue 实现把路由单独分离出来
Aug 13 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
Nov 12 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
小偷PHP+Html+缓存
2006/12/20 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
2014/11/08 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
2017/05/29 PHP
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
JS跨域解决方案之使用CORS实现跨域
2016/04/14 Javascript
js简单实现图片延迟加载的方法
2016/07/19 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
2017/06/29 Javascript
手把手教你使用vue-cli脚手架(图文解析)
2017/11/08 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
CountUp.js实现数字滚动增值效果
2019/10/17 Javascript
微信小程序按顺序同步执行的两种方式
2019/12/20 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
[56:29]Secret vs Optic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
Python中用memcached来减少数据库查询次数的教程
2015/04/07 Python
python执行get提交的方法
2015/04/29 Python
Python中计算三角函数之cos()方法的使用简介
2015/05/15 Python
python查找指定具有相同内容文件的方法
2015/06/28 Python
Python 用Redis简单实现分布式爬虫的方法
2017/11/23 Python
Python中XlsxWriter模块简介与用法分析
2018/04/24 Python
python如何读取bin文件并下发串口
2019/07/05 Python
选择Python写网络爬虫的优势和理由
2019/07/07 Python
python字符串切割:str.split()与re.split()的对比分析
2019/07/16 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
2019/08/12 Python
Python完全识别验证码自动登录实例详解
2019/11/24 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
keras的load_model实现加载含有参数的自定义模型
2020/06/22 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
美国殿堂级滑板、冲浪、滑雪服装品牌:Volcom(钻石)
2017/04/20 全球购物
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
《王二小》教学反思
2014/02/27 职场文书
学校总务处领导班子民主生活会对照检查材料思想汇报
2014/09/27 职场文书
田径运动会通讯稿
2015/07/18 职场文书
Oracle设置DB、监听和EM开机启动的方法
2021/04/25 Oracle