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的数据类型、字面量、变量介绍
May 23 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
Jun 04 Javascript
JavaScript中用于生成随机数的Math.random()方法
Jun 15 Javascript
基于JavaScript实现移动端TAB触屏切换效果
Oct 20 Javascript
jQuery中cookie插件用法实例分析
Dec 04 Javascript
正则表达式替换html元素属性的方法
Nov 26 Javascript
jquery——九宫格大转盘抽奖实例
Jan 16 Javascript
JQuery validate 验证一个单独的表单元素实例
Feb 17 Javascript
JavaScript中清空数组的三种方式
Mar 22 Javascript
jQuery Validate表单验证插件实现代码
Jun 08 jQuery
VSCode 配置uni-app的方法
Jul 11 Javascript
jQuery+ajax实现用户登录验证
Sep 13 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
PHP中的reflection反射机制测试例子
2014/08/05 PHP
PHP实现取得HTTP请求的原文
2014/08/18 PHP
阿里云PHP SMS短信服务验证码发送方法
2017/07/11 PHP
JavaScript DOM学习第六章 表单实例
2010/02/19 Javascript
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
jQuery编辑器KindEditor4.1.4代码高亮显示设置教程
2013/03/01 Javascript
js导出txt示例代码
2014/01/14 Javascript
JavaScript动态修改网页元素内容的方法
2015/03/21 Javascript
简单谈谈javascript中的变量、作用域和内存问题
2015/08/30 Javascript
JS+JSP通过img标签调用实现静态页面访问次数统计的方法
2015/12/14 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
javascript滚轮控制模拟滚动条
2016/10/19 Javascript
浅析bootstrap原理及优缺点
2017/03/19 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
node.js实现的装饰者模式示例
2017/09/06 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
jQuery分组选择器简单用法示例
2019/04/04 jQuery
js基础之事件捕获与冒泡原理
2019/10/09 Javascript
js实现div色块碰撞
2020/01/16 Javascript
vue 检测用户上传图片宽高的方法
2020/02/06 Javascript
JS中的继承操作实例总结
2020/06/06 Javascript
Vue实现简单的留言板
2020/10/23 Javascript
[15:58]DOTA2国际邀请赛采访专栏:Tongfu.Sansheng&KingJ,DK.rOtk
2013/08/08 DOTA
介绍Python的@property装饰器的用法
2015/04/28 Python
python实现冒泡排序算法的两种方法
2018/03/10 Python
Python爬虫实现验证码登录代码实例
2019/05/10 Python
关于windows下Tensorflow和pytorch安装教程
2020/02/04 Python
Python urllib2运行过程原理解析
2020/06/04 Python
Mytheresa美国官网:德国知名的女性奢侈品电商
2017/05/27 全球购物
党员志愿者活动方案
2014/08/28 职场文书
主持人开场白台词
2015/05/29 职场文书
入党团支部推荐意见
2015/06/02 职场文书
2016大一新生军训心得体会
2016/01/11 职场文书
Vue3.0中Ref与Reactive的区别示例详析
2021/07/07 Vue.js
Win11安装受阻怎么办? Windows11安装问题与解决方案汇总
2021/11/21 数码科技