Альтернатива jQuery LazyLoad (без кода полосы прокрутки) - PullRequest
4 голосов
/ 14 июля 2010

Эй, я бы хотел использовать плагин jQuery: LazyLoad

Но вместо того, чтобы вызывать событие в Window Scroll - я бы хотел вызвать его, когда элементы появляются в поле зрения.

(на моем сайте нет полос прокрутки, поэтому полосы прокрутки не доступны).

Помоги мне, пока у меня не осталось волос.

РЕДАКТИРОВАТЬ: Хорошо, так что я получил его на работу - Вроде - он, кажется, работает только вертикально и ТОЛЬКО с ШОУ ПЕРЕХОДА! *

1 Ответ

2 голосов
/ 14 июля 2010

Лучше всего установить таймер и повторно проверять видимость изображения. Или вы можете сделать метод 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
    })();
}
// ...
...