1 | (function($) {
|
2 |
|
3 | var scrollFireEventsHandled = false;
|
4 |
|
5 |
|
6 | Materialize.scrollFire = function(options) {
|
7 | var onScroll = function() {
|
8 | var windowScroll = window.pageYOffset + window.innerHeight;
|
9 |
|
10 | for (var i = 0 ; i < options.length; i++) {
|
11 |
|
12 | var value = options[i];
|
13 | var selector = value.selector,
|
14 | offset = value.offset,
|
15 | callback = value.callback;
|
16 |
|
17 | var currentElement = document.querySelector(selector);
|
18 | if ( currentElement !== null) {
|
19 | var elementOffset = currentElement.getBoundingClientRect().top + window.pageYOffset;
|
20 |
|
21 | if (windowScroll > (elementOffset + offset)) {
|
22 | if (value.done !== true) {
|
23 | if (typeof(callback) === 'function') {
|
24 | callback.call(this, currentElement);
|
25 | } else if (typeof(callback) === 'string') {
|
26 | var callbackFunc = new Function(callback);
|
27 | callbackFunc(currentElement);
|
28 | }
|
29 | value.done = true;
|
30 | }
|
31 | }
|
32 | }
|
33 | }
|
34 | };
|
35 |
|
36 |
|
37 | var throttledScroll = Materialize.throttle(function() {
|
38 | onScroll();
|
39 | }, options.throttle || 100);
|
40 |
|
41 | if (!scrollFireEventsHandled) {
|
42 | window.addEventListener("scroll", throttledScroll);
|
43 | window.addEventListener("resize", throttledScroll);
|
44 | scrollFireEventsHandled = true;
|
45 | }
|
46 |
|
47 |
|
48 | setTimeout(throttledScroll, 0);
|
49 | };
|
50 |
|
51 | })(jQuery);
|