static/js/scrollFire.js

44 lines
1.2 KiB
JavaScript
Raw Normal View History

2016-01-27 17:58:45 +03:00
(function($) {
// Input: Array of JSON objects {selector, offset, callback}
Materialize.scrollFire = function(options) {
var didScroll = false;
window.addEventListener("scroll", function() {
didScroll = true;
});
// Rate limit to 100ms
setInterval(function() {
if(didScroll) {
didScroll = false;
var windowScroll = window.pageYOffset + window.innerHeight;
for (var i = 0 ; i < options.length; i++) {
// Get options from each line
var value = options[i];
var selector = value.selector,
offset = value.offset,
callback = value.callback;
var currentElement = document.querySelector(selector);
if ( currentElement !== null) {
var elementOffset = currentElement.getBoundingClientRect().top + document.body.scrollTop;
if (windowScroll > (elementOffset + offset)) {
if (value.done !== true) {
var callbackFunc = new Function(callback);
callbackFunc();
value.done = true;
}
}
}
}
}
}, 100);
};
})(jQuery);