1. /*!
  2. * 2012-01-13 v1.1 偏移值计算修改 position → offset
  3. * 2012-09-25 v1.2 增加滚动容器参数, 回调参数
  4. * 2015-11-17 v1.3 只对显示元素进行处理
  5. */
  6. (function($) {
  7. $.fn.scrollLoading = function(options) {
  8. var defaults = {
  9. attr: "data-url",
  10. container: $(window),
  11. callback: $.noop
  12. };
  13. var params = $.extend({}, defaults, options || {});
  14. params.cache = [];
  15. $(this).each(function() {
  16. var node = this.nodeName.toLowerCase(), url = $(this).attr(params["attr"]);
  17. //重组
  18. var data = {
  19. obj: $(this),
  20. tag: node,
  21. url: url
  22. };
  23. params.cache.push(data);
  24. });
  25.  
  26. var callback = function(call) {
  27. if ($.isFunction(params.callback)) {
  28. params.callback.call(call.get(0));
  29. }
  30. };
  31. //动态显示数据
  32. var loading = function() {
  33.  
  34. var contHeight = params.container.height();
  35. if ($(window).get(0) === window) {
  36. contop = $(window).scrollTop();
  37. } else {
  38. contop = params.container.offset().top;
  39. }
  40.  
  41. $.each(params.cache, function(i, data) {
  42. var o = data.obj, tag = data.tag, url = data.url, post, posb;
  43.  
  44. if (o) {
  45. post = o.offset().top - contop, post + o.height();
  46.  
  47. if (o.is(':visible') && (post >= 0 && post < contHeight) || (posb > 0 && posb <= contHeight)) {
  48. if (url) {
  49. //在浏览器窗口内
  50. if (tag === "img") {
  51. //图片,改变src
  52. callback(o.attr("src", url));
  53. } else {
  54. o.load(url, {}, function() {
  55. callback(o);
  56. });
  57. }
  58. } else {
  59. // 无地址,直接触发回调
  60. callback(o);
  61. }
  62. data.obj = null;
  63. }
  64. }
  65. });
  66. };
  67.  
  68. //事件触发
  69. //加载完毕即执行
  70. loading();
  71. //滚动执行
  72. params.container.bind("scroll", loading);
  73. };
  74. })(jQuery);
  75.  
  76. //实例
  1. <script>
    var tempHTML = "";
    for (var i=1; i<=30; i+=1) {
    if (i == 6) {
    tempHTML += '<div class="zxx_test_list scrollLoading" data-url="loaded.html"><div style="padding:100px 0; text-align:center;"><img src="/study/image/loading.gif" style="margin:0 8px -8px 0;" />加载中...</div></div>';
    } else {
    tempHTML += '<div class="zxx_test_list tc"><img class="scrollLoading" data-url="//image.zhangxinxu.com/image/study/head/s180/'+i+'.jpeg" src="//s1.xiaomishu.com/b/img/pixel.gif" width="180" height="180" style="background:url(/study/image/loading.gif) no-repeat center;" /><br />图片'+i+'(新浪微博提供)</div>';
    }
    }
    tempHTML += '<div class="zxx_test_list tc"><h6>下面藏了一张图片,<a href="javascript:" id="zxxClickBtn">点击显示</a></h6>\
    <div id="zxxShow" style="display:none;">\
    <img class="scrollLoading" width="256" height="191" data-url="//image.zhangxinxu.com/image/study/s/s256/mm1.jpg" />\
    </div></div>';
    document.getElementById("zxxMainCon").innerHTML = tempHTML;
    </script>
  1. <script>
    $(function() {
    $(".scrollLoading").scrollLoading({
    container: $("#zxxMainCon"),
    callback: function() {
    this.style.border = "3px solid #a0b3d6";
    }
    });
  2.  
  3. //$(".scrollLoading").scrollLoading();
  4.  
  5. });
    </script>
  1.  

js 页面图片等元素在普通元素中滚动动态加载技术的更多相关文章

  1. 解决tableView中cell动态加载控件的重用问题

    解决tableView中cell动态加载控件的重用问题 tableView的cell,有时候需要在运行时取得对应的数据后才能够动态的创建该cell中的控件并加载到该cell中,此时,你一定会遇到重用问 ...

  2. JavaScript 元素的插入顺序以及动态加载js

    *****************记录下今天的心得***************** 1.元素的插入顺序 需求:异步从后台读取两个数据a和b,并动态加载到父容器x中,要求a必须在b的左边 实际情况:一 ...

  3. bootstrap中的动态加载出来的图片轮播中的li标签中的class="active"的动态添加移除

    //该方法是在slide改变时立即触发该事件, $('#myCarousel').on('slide.bs.carousel', function () { $("#myCarousel o ...

  4. 关于Unity3D中Resources动态加载NGUI图片的方法

    在NGUI中有些图片我需要动态进行变更或者加载,怎么办? 首先在项目中创建一个Resources目录,接着把需要的图片放在这里面,可以有子文件夹么?当然可以,文件结构很重要哦~ NGUI加载图片的方法 ...

  5. Android中的动态加载机制

    在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优势.本 ...

  6. java中的动态加载和热替换

    https://blog.csdn.net/u010833547/article/details/54312052 ****************************************** ...

  7. C#中如何动态加载DockPanel

    在WinForm项目中要求实现动态加载DockPanel. 简单研究了下,演示代码如下: 很简单几行代码,实现了基本意图.看起来问题很快解决. 但是实际应用中发现几个问题: 1.当第一次运行时,doc ...

  8. Excel催化剂开源第7波-VSTO开发中Ribbon动态加载菜单

    在VS开发环境中,特别是VSTO的开发,微软已经现成地给开发者准备了设计器模式的功能区开发,相对传统的VBA.ExcelDna和其他方式的COM加载项开发来说,不需要手写xml功能区,直接类似拖拉窗体 ...

  9. 页面滚动动态加载数据,页面下拉自动加载内容 jquery

    <!DOCTYPE=html> <html> <head> < script src="js/jquery.js" type=" ...

随机推荐

  1. 机器学习经典算法笔记-Support Vector Machine SVM

    可供使用现成工具:Matlab SVM工具箱.LibSVM.SciKit Learn based on python 一 问题原型 解决模式识别领域中的数据分类问题,属于有监督学习算法的一种. 如图所 ...

  2. idea设置控制台不打印日志

    这样做的好处是当想打印数据到控制台查看就特别方便,这个在大数据spark sql使用的多.当然如果代码报错也会打印,这个不必担心. 方案Ⅰ 方法是将这个log日志文件放到idea的资源目录里即可 lo ...

  3. bzoj 4078: [Wf2014]Metal Processing Plant【二分+2-SAT+枚举+并查集】

    枚举从大到小s1,二分s2(越大越有可能符合),2-SAT判断,ans取min 思路倒是挺简单的,就是二分的时候出了比较诡异的问题,只能二分s2的值,不能在数组上二分... 有个优化,就是当不是二分图 ...

  4. nginx下配置虚拟主机

    linux 虚拟机下配置虚拟主机 nginx.conf 文件不动, 在 conf.d 或者 conf 目录下 新建项目.conf server { listen 80; server_name loc ...

  5. spring boot 项目发布运行

    1. maven install 发布jar包 2. java -jar webservice.jar 启动jar包

  6. [CQOI 2006]线段树之简单题

    Description 有一个n个元素的数组,每个元素初始均为0.有m条指令,要么让其中一段连续序列数字反转--0变1,1变0(操作1),要么询问某个元素的值(操作2).例如当n=20时,10条指令如 ...

  7. poj 2083 Fractal 递归 图形打印

    题目链接: http://poj.org/problem?id=2083 题目描述: n = 1时,图形b[1]是X n = 2时,图形b[2]是X  X        X               ...

  8. hihoOffer收割练习20题目2

    题目2 : SCI表示法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 每一个正整数 N 都能表示成若干个连续正整数的和,例如10可以表示成1+2+3+4,15可以表示 ...

  9. 题解报告:hdu 2084 数塔(递推dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这 ...

  10. 题解报告:hdu 1212 Big Number(大数取模+同余定理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1212 Problem Description As we know, Big Number is al ...