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 相关文章推荐
js自带函数备忘 数组
Dec 29 Javascript
一个高效的JavaScript压缩工具下载集合
Mar 06 Javascript
JavaScript中的apply()方法和call()方法使用介绍
Jul 25 Javascript
JavaScript高级程序设计(第3版)学习笔记2 js基础语法
Oct 11 Javascript
jquery判断小数点两位和自动删除小数两位后的数字
Mar 19 Javascript
再JavaScript的jQuery库中编写动画效果的指南
Aug 13 Javascript
JS组件Form表单验证神器BootstrapValidator
Jan 26 Javascript
js实现网页图片延时加载 提升网页打开速度
Jan 26 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
Sep 01 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
Sep 04 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
Jul 11 Javascript
Vue-cli项目获取本地json文件数据的实例
Mar 07 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
ftp类(example.php)
2006/10/09 PHP
MySQL数据源表结构图示
2008/06/05 PHP
PHP similar_text 字符串的相似性比较函数
2010/05/26 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
2015/12/19 PHP
php使用curl通过代理获取数据的实现方法
2016/05/16 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
javascript 写类方式之二
2009/07/05 Javascript
JavaScript中的apply和call函数详解
2014/07/20 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
JQuery插件jcarousellite的参数中文说明
2015/05/11 Javascript
js弹出对话框方式小结
2015/11/17 Javascript
基于jQuery实现放大镜特效
2020/10/19 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
微信小程序 scroll-view实现锚点滑动的示例
2017/12/06 Javascript
vue axios整合使用全攻略
2018/05/24 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
element-ui上传一张图片后隐藏上传按钮功能
2019/05/22 Javascript
nuxt.js添加环境变量,区分项目打包环境操作
2020/11/06 Javascript
简单介绍Python中的JSON使用
2015/04/28 Python
Django中URLconf和include()的协同工作方法
2015/07/20 Python
python实现获取Ip归属地等信息
2016/08/27 Python
python去掉空白行的多种实现代码
2018/03/19 Python
解决python爬虫中有中文的url问题
2018/05/11 Python
Python计算两个矩形重合面积代码实例
2019/09/16 Python
python 视频下载神器(you-get)的具体使用
2021/01/06 Python
x-ua-compatible content=”IE=7, IE=9″意思理解
2013/07/22 HTML / CSS
Foot Locker意大利官网:全球领先的运动鞋和服装零售商
2017/05/30 全球购物
澳大利亚香水在线:Price Rite Mart
2017/12/28 全球购物
.NET方向面试题
2014/11/20 面试题
什么样的创业计划书可行性高?
2014/02/01 职场文书
师范生自荐信模板
2014/05/28 职场文书
车贷收入证明范本
2014/09/14 职场文书
贷款工资证明范本
2015/06/12 职场文书
Elasticsearch 数据类型及管理
2022/04/19 Python