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 相关文章推荐
List the Codec Files on a Computer
Jun 11 Javascript
jquery之empty()与remove()区别说明
Sep 10 Javascript
没有document.getElementByName方法
Aug 19 Javascript
javascript中innerText和innerHTML属性用法实例分析
May 13 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
Jun 28 Javascript
基于JavaScript定位当前的地理位置
Apr 11 Javascript
javascript按顺序加载运行js方法
Dec 01 Javascript
前后端常见的几种鉴权方式(小结)
Aug 04 Javascript
vue中实现回车键登录功能
Feb 19 Javascript
解决iview table组件里的 固定列 表格不自适应的问题
Nov 13 Javascript
微信小程序轮播图swiper代码详解
Dec 01 Javascript
Vue ECharts实现机舱座位选择展示功能
May 15 Vue.js
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 Google的translate API代码
2008/12/10 PHP
有道搜索和IP138的IP的API接口(PHP应用)
2012/11/29 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
2019/06/05 PHP
javascript经典特效分享 手风琴、轮播图、图片滑动
2016/09/14 Javascript
利用JS轻松实现获取表单数据
2016/12/06 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
2017/01/04 Javascript
详解nodejs的express如何自动生成项目框架
2017/07/12 NodeJs
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
使用vue-cli编写vue插件的方法
2018/02/26 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
记录一篇关于redux-saga的基本使用过程
2018/08/18 Javascript
vue.js自定义组件directives的实例代码
2018/11/09 Javascript
[01:03]悬念揭晓 11月26日DOTA2完美盛典不见不散
2017/11/23 DOTA
[02:37]2018DOTA2亚洲邀请赛赛前采访-EG篇
2018/04/03 DOTA
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
Python加pyGame实现的简单拼图游戏实例
2015/05/15 Python
5个很好的Python面试题问题答案及分析
2018/01/19 Python
python TCP Socket的粘包和分包的处理详解
2018/02/09 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
如何在mac版pycharm选择python版本
2020/07/21 Python
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
浅析图片上传及canvas压缩的流程
2020/06/10 HTML / CSS
Debenhams爱尔兰:英国知名的百货公司
2017/01/02 全球购物
Hawes & Curtis澳大利亚官网:英国经典服饰品牌
2018/10/29 全球购物
Farfetch台湾官网:奢侈品牌时尚购物平台
2019/06/17 全球购物
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
Douglas意大利官网:购买香水和化妆品
2020/05/27 全球购物
电子商务专业实习生自我鉴定
2013/09/24 职场文书
医药销售求职信范文
2014/02/01 职场文书
家庭贫困证明书(3篇)
2014/09/15 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
二年级语文上册复习计划
2015/01/19 职场文书
Python实现简单的俄罗斯方块游戏
2021/09/25 Python