-
Notifications
You must be signed in to change notification settings - Fork 4
/
jquery-zload.min.js
1 lines (1 loc) · 962 Bytes
/
jquery-zload.min.js
1
(function($){$.fn.zload=function(o){o=o||{};o.attribute=o.attribute||"original";o.fallback=o.fallback||"none";o.unload=o.unload||false;o.delay=o.delay||30;o.fallback=o.fallback==="none"?o.fallback:"url("+o.fallback+")";var sel="[data-"+o.attribute+"]";var $window=$(window);var $el=this;var to=null;var update=function(){if(to)clearTimeout(to);to=setTimeout(loop,o.delay)};var loop=function(){if(typeof o.beforeLoop==="function")o.beforeLoop($el);var w_top=$window.scrollTop();var w_bottom=$window.height()+w_top;$el.children(sel).each(function(i,el){var $el=$(el);var url=$el.data(o.attribute);var el_top=$el.offset().top;var el_bottom=el_top+$el.height();if(w_top<el_bottom&&el_top<w_bottom){var bg=$el.css("background-image");if(!bg||bg==="none"||bg.indexOf(url)==-1){$el.css("background-image","url("+url+")")}}else if(o.unload){$el.css("background-image",o.fallback)}});if(typeof o.afterLoop==="function")o.afterLoop($el)};$window.scroll(update)}})(jQuery);