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 15 Javascript
JS 无法通过W3C验证的处理方法
Mar 09 Javascript
javascript预览上传图片发现的问题的解决方法
Nov 25 Javascript
js每隔5分钟执行一次ajax请求的实现方法
Nov 27 Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
May 28 Javascript
javascript删除一个html元素节点的方法
Dec 20 Javascript
jQuery中find()方法用法实例
Jan 07 Javascript
jQuery实现下拉框选择图片功能实例
Aug 08 Javascript
JS判断日期格式是否合法的简单实例
Jul 11 Javascript
基于JS实现checkbox全选功能实例代码
Oct 31 Javascript
利用node.js实现反向代理的方法详解
Jul 24 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
Jul 01 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实现httpclient类示例
2014/04/08 PHP
PHP实现PDO的mysql数据库操作类
2014/12/12 PHP
thinkPHP删除前弹出确认框的简单实现方法
2016/05/16 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
2016/06/13 PHP
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
2013/06/24 Javascript
javascript设置金额样式转换保留两位小数示例代码
2013/12/04 Javascript
js中replace的用法总结
2013/12/27 Javascript
jQuery实现带延迟的二级tab切换下拉列表效果
2015/09/01 Javascript
Bootstrap每天必学之简单入门
2015/11/19 Javascript
JS Array创建及concat()split()slice()的使用方法
2016/06/03 Javascript
jQuery soColorPacker 网页拾色器
2016/06/22 Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
2016/06/25 Javascript
微信小程序 二维码canvas绘制实例详解
2017/01/06 Javascript
angular实现spa单页面应用实例
2017/07/10 Javascript
详解react服务端渲染(同构)的方法
2017/09/21 Javascript
Django中使用jquery的ajax进行数据交互的实例代码
2017/10/15 jQuery
CSS3结合jQuery实现动画效果及回调函数的实例
2017/12/27 jQuery
jQuery.parseJSON()函数详解
2019/02/28 jQuery
vue中使用element组件时事件想要传递其他参数的问题
2019/09/18 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
vue 查看dist文件里的结构(多种方式)
2020/01/17 Javascript
python 将字符串转换成字典dict
2013/03/24 Python
python使用urllib模块开发的多线程豆瓣小站mp3下载器
2014/01/16 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
2018/02/05 Python
Python基于opencv调用摄像头获取个人图片的实现方法
2019/02/21 Python
python覆盖写入,追加写入的实例
2019/06/26 Python
django 微信网页授权登陆的实现
2019/07/30 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
恐龙的灭绝教学反思
2014/02/12 职场文书
戒毒悔改检讨书
2014/09/21 职场文书
企业年检委托书范本
2014/10/14 职场文书
python 统计代码耗时的几种方法分享
2021/04/02 Python
Nginx中使用Lua脚本与图片的缩略图处理的实现
2022/03/18 Servers