我花了相当多的时间试图让同位素和懒惰加载在一起工作.

问题:如果用户滚动下来,延迟加载工作,但是如果用户使用过滤器,则项目将显示在顶部,但图像将不会加载.

这是有同样问题的人,但似乎他已经解决了这个问题.我尝试了几件事情,但仍然无法让它工作.

这是打字https://github.com/tuupola/jquery_lazyload/issues/51

非常感谢你的帮助

我正在使用的代码如下.

jQuery(document).ready(function($) {
    $('#big_container .media_block img').each(function(index) {
        var item_height = $(this).attr("height");
        $(this).parent().parent().css("height",item_height);
    });
    $('#big_container').isotope({
    itemSelector : '.item',layoutMode : 'masonry',masonry: {
        columnWidth: 5,},sortBy : 'date',sortAscending : false,getSortData : {
        date : function ( $elem ) {
            return $elem.find('.date').text(); // Date format should be [Y-m-d H:i]
        },views : function( $elem ) {
            return parseInt( $elem.attr('data-views'),10 );
          },//featured : function ( $elem ) {
        // return $elem.attr('data-featured');
        //  },rates : function( $elem ) {
            return parseInt( $elem.attr('data-rates'),comments : function( $elem ) {
            return parseInt( $elem.attr('data-comments'),10 );
          }
    }

    });

    $('#sort-by li a').click(function(){
        var $this = $(this);
        if ($(this).parent().hasClass('selected') ) {
          return false;
        }
        var $optionSet = $this.parents();
        $optionSet.find('.selected').removeClass('selected');
           $this.addClass('selected');
          var sortName = $(this).attr('href').slice(1);
          $('#big_container').isotope({ sortBy : sortName });
          return false;
    });
});

解决方法

要获取同位素的排序/过滤以使用lazyload,您必须执行以下操作.
jQuery(document).ready(function($) {
    var $win = $(window),$con = $('#container'),$imgs = $("img.lazy");

    $con.isotope();

    $con.on('layoutComplete',function(){
        $win.trigger("scroll");
    });

    $imgs.lazyload({
        failure_limit: Math.max($imgs.length - 1,0)
    });
});

说明

根据文件(http://www.appelsiini.net/projects/lazyload)

After scrolling page Lazy Load loops though unloaded images. In loop it checks if image has become visible. By default loop is stopped when first image below the fold (not visible) is found. This is based on following assumption. Order of images on page is same as order of images in HTML code. With some layouts assumption this might be wrong.

使用同位素排序/过滤列表,页面顺序与HTML完全不同,因此我们需要调整我们的fail_limit.

你可以看到我们存储jQuery对象,以便我们可以使用它的length-1作为我们的fail_limit.如果你好奇为什么长度为1,这是因为以下检查lazyload的更新方法.

if (++counter > settings.failure_limit) {
    return false;
}

对其他事件的懒惰负载

如果您没有在滚动时触发您的lazyloads,则需要将“滚动”触发器交换为您正在使用的任何事件.

演示

http://jsfiddle.net/arthurc/ZnEhn/

您网站的代码

我将一些jQuery对象存储在变量中,因为它们需要重新使用.

jQuery(document).ready(function($) {
    var $window = $(window);
    var $images = $('#big_container .media_block img');
    var $big_container = $('#big_container');

    $images.each(function(index) {
        var item_height = $(this).attr("height");
        $(this).parent().parent().css("height",item_height);
    });


    $big_container.isotope({
        itemSelector : '.item',masonry: {
            columnWidth: 5,getSortData : {
            date : function ( $elem ) {
                return $elem.find('.date').text(); // Date format should be [Y-m-d H:i]
            },views : function( $elem ) {
                return parseInt( $elem.attr('data-views'),10 );
              },//featured : function ( $elem ) {
            // return $elem.attr('data-featured');
            //  },rates : function( $elem ) {
                return parseInt( $elem.attr('data-rates'),comments : function( $elem ) {
                return parseInt( $elem.attr('data-comments'),10 );
              }
        }

    });


    $big_container.on('layoutComplete',function(){
        $win.trigger("scroll");
    });

    $('#sort-by li a').click(function(){
        var $this = $(this);
        if ($(this).parent().hasClass('selected') ) {
          return false;
        }
        var $optionSet = $this.parents();
        $optionSet.find('.selected').removeClass('selected');
           $this.addClass('selected');
          var sortName = $(this).attr('href').slice(1);
          $big_container.isotope({ sortBy : sortName });
          return false;
    });


    $images.lazyload({
        failure_limit : Math.max($images.length-1,0);
    })
});

惰性载荷 – 惰性载荷同位素的更多相关文章

  1. 利用原生JS实现懒加载lazyLoad的三种方法总结

    加载页面的时候,图片一直都是流量大头,针对图片的性能方法也挺多的比如base64、雪碧图等;懒加载也是其中一种,这篇文章主要给大家介绍了关于利用原生JS实现懒加载lazyLoad的三种方法,需要的朋友可以参考下

  2. Vue lazyload图片懒加载实例详解

    本文通过实例代码给大家介绍了Vue lazyload图片懒加载的相关知识,通过导入配置等操作src/main.jswenj ,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

  3. 详解jQuery lazyload 懒加载

    Lazy Load是一个用 JavaScript 编写的jQuery插件. 它可以延迟加载长页面中的图片. 本文对它进行实例介绍,具有很好的参考价值,下面跟着小编一起来看下吧

  4. Fragment 占位组件不生成标签与路由组件lazyLoad案例

    这篇文章主要为大家介绍了Fragment 占位组件不生成标签与路由组件lazyLoad案例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  5. 深入研究jQuery图片懒加载 lazyload.js使用方法

    这篇文章主要介绍了jQuery图片懒加载 lazyload.js使用方法,通过设置临界点,占位符,设置事件来触发加载等等来讲解lazyload.js的使用,具体操作步骤大家可查看下文的详细讲解,感兴趣的小伙伴们可以参考一下。

  6. ajax+lazyload时lazyload失效问题及解决

    这里设置了图片加载进来显示是渐现的效果,以及包裹整个商品列表的容器container

  7. Angular中使用me-lazyload实现图片懒加载

    当js监听到该图片元素进入可视窗口时,将自定义属性中的地址写到src属性中,达到懒加载的效果。将me-lazyload.js引入需要的工程即可。使用首先需要明确的是,me-lazyload是一个指令。[1]依赖注入将me-lazyload注入祖先module或者需要使用的module。或者[2]属性替换将图片的src替换成lazy-src。

  8. 前端微服务化:拆分大型 Angular 应用的四种策略

    上一个月,我们花了大量的时间不熂设计方案来拆分一个大型的Angular应用。从使用Angular的Lazyload到前端微服务化,进行了一系列的讨论。过去的几周里,作为一个“专业”的咨询师,一直忙于在为客户设计一个Angular拆分的服务化方案。

  9. jquery – Lazy Loading in Flexslider

    解决方法我在滚动过程中实现了一个懒惰的负载.与此处提出的其他解决方案相比,该解决方案对于大型收藏来说效果更好.在初始化期间,它仅加载前5个图像,然后为每个动画加载3张图像.和javascript代码:

  10. jQuery LazyLoad不加载图像直到滚动

    jQueryLazyLoad不会在打开页面的可见部分加载图像,直到我滚动页面,即使在1px。当我滚动页面所有的工作正确更新:CoffeScript但是$.resize()仅在页面加载时从浏览器的控制台输入才有用解决方法您的图像必须设置宽度和高度。

随机推荐

  1. jquery-plugins – 是否可以使用猫头鹰旋转木马实现循环/无限轮播?

    我正在使用猫头鹰旋转木马,它的工作完美,除了它不支持循环/无限滚动.我没有搜索google和stackoverflow的想法,没有运气.有没有人在猫头鹰旋转木马上实现圆形/无限滚动?

  2. jQuery动态输入字段焦点

    我想使用以下jQuery向我的页面动态添加一个输入字段:在这样做之后,我希望输入字段具有闪烁的文本光标的焦点,所以我想在创建后立即输入.有人可以告诉我我该怎么办?

  3. jquery – 为什么$(window).height()这样错了?

    我试图获取当前浏览器的视口高度,使用但我得到的价值观太低了.当视口高度高达850px时,我从height()获取大约350或400像素的值.这是怎么回事?

  4. jquery – 如果在此div之外和其他draggables内部(使用无效和有效的还原选项),则可拖动恢复

    例如这样但是由于明显的原因,这不行.我可以说这个吗?

  5. 创建一个jQueryUI 1.8按钮菜单

    现在jQueryUI1.8已经出来了,我正在浏览更新,并且遇到了新的Buttonwidget,特别是SplitButtonwithadropdown的演示之一.这个演示似乎表明Buttonwidget可以在这里创建一个下拉菜单.作为讨论的问题,我想知道使用这个新的Button小部件来创建一个下拉菜单有什么方法.干杯.解决方法您必须在按钮下方列出一个列表,方式类似于此处为自动完成提供的演示:http

  6. 灰色divs使用JQuery

    我试图使用这个代码:为了淡出一大堆名为MySelectorDiv的div,唯一的是,它只会淡出第一个而不是所有的div,为什么呢?

  7. 使用jQuery动态插入到列表中

    我有两个订单列表在彼此旁边.当我从一个列表中选出一个节点时,我想按照字母顺序插入到另一个列表中.抓住的是我想要把一个元素放在另一个列表中,而不刷新整个列表.奇怪的是,当我插入到右边的列表中,它工作正常,但是当我插入到左边的列表中时,顺序永远不会出来.我也尝试将所有内容读入数组,并将其排序在一起,以防止children()方法没有按照显示顺序返回任何东西,但是我仍然得到相同的结果.这是我的jQuer

  8. 没有回应MediaWiki API使用jQuery

    我试图从维基百科获取一些内容作为JSON:但我没有回应.如果我粘贴到浏览器的地址栏,就像我得到预期的内容.怎么了?解决方法您需要通过添加&callback=?来触发具有$.getJSON()的JSONP行为?在querystring上,像这样:Youcantestithere.没有使用JSONP,你正在击中same-originpolicy,阻止XmlHttpRequest获取任何数据.

  9. jQuery Ajax请求每30秒

    我有这段代码,但是有些人在我的网站上的值可能会改变.我需要每30秒钟更新一次#financediv.这可以做吗解决方法您可以将代码放在单独的函数中,如下所示:然后每30秒建立一个定时器调用该函数:祝你好运!总结以上是DEVMAX为你收集整理的jQueryAjax请求每30秒全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  10. jquery – keypress事件在IE和Chrome中不工作,但在FF工作

    任何想法为什么会这样发生?我通常认为Chrome会更加宽容代码?这是我的按键键.我错过了什么吗?右图();和leftimage();是应该工作的功能,因为我在其他地方使用这些功能谢谢您的帮助!

返回
顶部