jQuery LazyLoad Alternative(减去滚动条代码)

时间:2010-07-14 09:48:00

标签: jquery html css lazy-loading

嘿,我想要的是使用jQuery插件:LazyLoad

但是,不是在Window Scroll上触发事件 - 我想在触发时触发它 元素进入视野。

(我的网站上没有滚动条,因此滚动条是一个选项。)

在我没有头发之前帮助我。

编辑:好的,所以我让它工作 - 排序 - 它似乎只能垂直工作,只有溢出显示! *

1 个答案:

答案 0 :(得分:2)

您最好的选择是设置计时器并反复检查图像可见性。或者你可以使tracker函数成为公共方法,然后如果有什么改变就从外面调用它。

将LazyLoad更改为以下内容:

// ...
var elements = this;
if ("scroll" == settings.event) { // <-- you may want to remove conditional block
     var tracker = function(event) {  // <-- give it a name
        var counter = 0;
        elements.each(function() {
            if ($.abovethetop(this, settings) ||
                $.leftofbegin(this, settings)) {
                    /* Nothing. */
            } else if (!$.belowthefold(this, settings) &&
                !$.rightoffold(this, settings)) {
                    $(this).trigger("appear");
            } else {
                if (counter++ > settings.failurelimit) {
                    return false;
                }
            }
        });
        /* Remove image from array so it is not looped next time. */
        var temp = $.grep(elements, function(element) {
            return !element.loaded;
        });
        elements = $(temp);
    };

    (function repeat(){              
      tracker(); // <-- so you can use it here
      if (elements.length) 
        setTimeout(repeat, 100); // <-- check every 100ms
    })();
}
// ...